3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo stripSubdomain(); function stripSubdomain() { $tld = explode(',', 'ab.ca,ac.ac,ac.at,ac.be,ac.cn,ac.il,ac.in,ac.jp,ac.kr,ac.sg,ac.th,ac.uk,ad.jp,adm.br,adv.br,ah.cn,am.br,arq.br,art.br,arts.ro,asn.au,asso.fr,asso.mc,bc.ca,bio.br,biz.pl,biz.tr,bj.cn,br.com,cn.com,cng.br,cnt.br,co.ac,co.at,co.de,co.gl,co.hk,co.id,co.il,co.in,co.jp,co.kr,co.mg,co.ms,co.nz,co.th,co.uk,co.ve,co.vi,co.za,com.ag,com.ai,com.ar,com.au,com.br,com.cn,com.co,com.cy,com.de,com.do,com.ec,com.es,com.fj,com.fr,com.gl,com.gt,com.hk,com.hr,com.hu,com.kg,com.ki,com.lc,com.mg,com.mm,com.ms,com.mt,com.mu,com.mx,com.my,com.na,com.nf,com.ng,com.ni,com.pa,com.ph,com.pl,com.pt,com.qa,com.ro,com.ru,com.sb,com.sc,com.sg,com.sv,com.tr,com.tw,com.ua,com.uy,com.ve,com.vn,cp.tz,cq.cn,de.com,de.org,ecn.br,ed.jp,edu.au,edu.cn,edu.hk,edu.mm,edu.my,edu.pl,edu.pt,edu.qa,edu.sg,edu.tr,edu.tw,eng.br,ernet.in,esp.br,etc.br,eti.br,eu.com,eu.int,eu.lv,firm.in,firm.ro,fm.br,fot.br,fst.br,g12.br,gb.com,gb.net,gd.cn,gen.in,go.jp,go.kr,go.th,gov.au,gov.az,gov.br,gov.cn,gov.il,gov.in,gov.mm,gov.my,gov.qa,gov.sg,gov.tr,gov.tw,gov.uk,gr.jp,gs.cn,gv.ac,gv.at,gx.cn,gz.cn,he.cn,hi.cn,hk.cn,hl.cn,hu.com,id.au,idv.tw,in.ua,ind.br,ind.in,inf.br,info.pl,info.ro,info.tr,info.ve,iwi.nz,jl.cn,jor.br,js.cn,jus.br,k12.il,k12.tr,kr.com,lel.br,lg.jp,ln.cn,ltd.uk,maori.nz,mb.ca,me.uk,med.br,mi.th,mil.br,mil.uk,mo.cn,mod.uk,muni.il,nb.ca,ne.jp,ne.kr,net.ag,net.ai,net.au,net.br,net.cn,net.do,net.gl,net.hk,net.il,net.in,net.kg,net.ki,net.lc,net.mg,net.mm,net.mu,net.ni,net.nz,net.pl,net.ru,net.sb,net.sc,net.sg,net.th,net.tr,net.tw,net.uk,net.ve,nf.ca,nhs.uk,nm.cn,nm.kr,no.com,nom.br,nom.ni,nom.ro,ns.ca,nt.ca,nt.ro,ntr.br,nx.cn,odo.br,off.ai,on.ca,or.ac,or.at,or.jp,or.kr,or.th,org.ag,org.ai,org.au,org.br,org.cn,org.do,org.es,org.gl,org.hk,org.in,org.kg,org.ki,org.lc,org.mg,org.mm,org.ms,org.nf,org.ni,org.nz,org.pl,org.ro,org.ru,org.sb,org.sc,org.sg,org.tr,org.tw,org.uk,org.ve,pe.ca,plc.uk,police.uk,ppg.br,presse.fr,pro.br,psc.br,psi.br,qc.ca,qc.com,qh.cn,rec.br,rec.ro,res.in,sa.com,sc.cn,sch.uk,se.com,se.net,sh.cn,sk.ca,slg.br,sn.cn,store.ro,tj.cn,tm.fr,tm.mc,tm.ro,tmp.br,tur.br,tv.br,tv.tr,tw.cn,uk.com,uk.net,us.com,uy.com,vet.br,waw.pl,web.ve,www.ro,xj.cn,xz.cn,yk.ca,yn.cn,zj.cn,zlg.br'); $host = strtolower('testaa'); $bits = explode('.', $host); $len = count($bits); // 'localhost', 'myintranet' ... or ip number if ($len < 2 || preg_match('/^\d+$/', $bits[$len - 1])) return $host; $secondary = join('.', array_slice($bits, -2)); if ($len >= 3 && in_array($secondary, $tld)) return join('.', array_slice($bits, -3)); return $secondary; } ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/r5mYk
function name:  (null)
number of ops:  4
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   INIT_FCALL_BY_NAME                                       'stripSubdomain'
          1        DO_FCALL                                      0  $0      
          2        ECHO                                                     $0
   28     3      > RETURN                                                   1

Function stripsubdomain:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 18, Position 2 = 25
Branch analysis from position: 18
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 27
Branch analysis from position: 26
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 27
2 jumps found. (Code = 46) Position 1 = 38, Position 2 = 43
Branch analysis from position: 38
2 jumps found. (Code = 43) Position 1 = 44, Position 2 = 53
Branch analysis from position: 44
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 43
Branch analysis from position: 25
filename:       /in/r5mYk
function name:  stripSubdomain
number of ops:  55
compiled vars:  !0 = $tld, !1 = $host, !2 = $bits, !3 = $len, !4 = $secondary
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    8     0  E >   INIT_FCALL                                               'explode'
          1        SEND_VAL                                                 '%2C'
          2        SEND_VAL                                                 'ab.ca%2Cac.ac%2Cac.at%2Cac.be%2Cac.cn%2Cac.il%2Cac.in%2Cac.jp%2Cac.kr%2Cac.sg%2Cac.th%2Cac.uk%2Cad.jp%2Cadm.br%2Cadv.br%2Cah.cn%2Cam.br%2Carq.br%2Cart.br%2Carts.ro%2Casn.au%2Casso.fr%2Casso.mc%2Cbc.ca%2Cbio.br%2Cbiz.pl%2Cbiz.tr%2Cbj.cn%2Cbr.com%2Ccn.com%2Ccng.br%2Ccnt.br%2Cco.ac%2Cco.at%2Cco.de%2Cco.gl%2Cco.hk%2Cco.id%2Cco.il%2Cco.in%2Cco.jp%2Cco.kr%2Cco.mg%2Cco.ms%2Cco.nz%2Cco.th%2Cco.uk%2Cco.ve%2Cco.vi%2Cco.za%2Ccom.ag%2Ccom.ai%2Ccom.ar%2Ccom.au%2Ccom.br%2Ccom.cn%2Ccom.co%2Ccom.cy%2Ccom.de%2Ccom.do%2Ccom.ec%2Ccom.es%2Ccom.fj%2Ccom.fr%2Ccom.gl%2Ccom.gt%2Ccom.hk%2Ccom.hr%2Ccom.hu%2Ccom.kg%2Ccom.ki%2Ccom.lc%2Ccom.mg%2Ccom.mm%2Ccom.ms%2Ccom.mt%2Ccom.mu%2Ccom.mx%2Ccom.my%2Ccom.na%2Ccom.nf%2Ccom.ng%2Ccom.ni%2Ccom.pa%2Ccom.ph%2Ccom.pl%2Ccom.pt%2Ccom.qa%2Ccom.ro%2Ccom.ru%2Ccom.sb%2Ccom.sc%2Ccom.sg%2Ccom.sv%2Ccom.tr%2Ccom.tw%2Ccom.ua%2Ccom.uy%2Ccom.ve%2Ccom.vn%2Ccp.tz%2Ccq.cn%2Cde.com%2Cde.org%2Cecn.br%2Ced.jp%2Cedu.au%2Cedu.cn%2Cedu.hk%2Cedu.mm%2Cedu.my%2Cedu.pl%2Cedu.pt%2Cedu.qa%2Cedu.sg%2Cedu.tr%2Cedu.tw%2Ceng.br%2Cernet.in%2Cesp.br%2Cetc.br%2Ceti.br%2Ceu.com%2Ceu.int%2Ceu.lv%2Cfirm.in%2Cfirm.ro%2Cfm.br%2Cfot.br%2Cfst.br%2Cg12.br%2Cgb.com%2Cgb.net%2Cgd.cn%2Cgen.in%2Cgo.jp%2Cgo.kr%2Cgo.th%2Cgov.au%2Cgov.az%2Cgov.br%2Cgov.cn%2Cgov.il%2Cgov.in%2Cgov.mm%2Cgov.my%2Cgov.qa%2Cgov.sg%2Cgov.tr%2Cgov.tw%2Cgov.uk%2Cgr.jp%2Cgs.cn%2Cgv.ac%2Cgv.at%2Cgx.cn%2Cgz.cn%2Che.cn%2Chi.cn%2Chk.cn%2Chl.cn%2Chu.com%2Cid.au%2Cidv.tw%2Cin.ua%2Cind.br%2Cind.in%2Cinf.br%2Cinfo.pl%2Cinfo.ro%2Cinfo.tr%2Cinfo.ve%2Ciwi.nz%2Cjl.cn%2Cjor.br%2Cjs.cn%2Cjus.br%2Ck12.il%2Ck12.tr%2Ckr.com%2Clel.br%2Clg.jp%2Cln.cn%2Cltd.uk%2Cmaori.nz%2Cmb.ca%2Cme.uk%2Cmed.br%2Cmi.th%2Cmil.br%2Cmil.uk%2Cmo.cn%2Cmod.uk%2Cmuni.il%2Cnb.ca%2Cne.jp%2Cne.kr%2Cnet.ag%2Cnet.ai%2Cnet.au%2Cnet.br%2Cnet.cn%2Cnet.do%2Cnet.gl%2Cnet.hk%2Cnet.il%2Cnet.in%2Cnet.kg%2Cnet.ki%2Cnet.lc%2Cnet.mg%2Cnet.mm%2Cnet.mu%2Cnet.ni%2Cnet.nz%2Cnet.pl%2Cnet.ru%2Cnet.sb%2Cnet.sc%2Cnet.sg%2Cnet.th%2Cnet.tr%2Cnet.tw%2Cnet.uk%2Cnet.ve%2Cnf.ca%2Cnhs.uk%2Cnm.cn%2Cnm.kr%2Cno.com%2Cnom.br%2Cnom.ni%2Cnom.ro%2Cns.ca%2Cnt.ca%2Cnt.ro%2Cntr.br%2Cnx.cn%2Codo.br%2Coff.ai%2Con.ca%2Cor.ac%2Cor.at%2Cor.jp%2Cor.kr%2Cor.th%2Corg.ag%2Corg.ai%2Corg.au%2Corg.br%2Corg.cn%2Corg.do%2Corg.es%2Corg.gl%2Corg.hk%2Corg.in%2Corg.kg%2Corg.ki%2Corg.lc%2Corg.mg%2Corg.mm%2Corg.ms%2Corg.nf%2Corg.ni%2Corg.nz%2Corg.pl%2Corg.ro%2Corg.ru%2Corg.sb%2Corg.sc%2Corg.sg%2Corg.tr%2Corg.tw%2Corg.uk%2Corg.ve%2Cpe.ca%2Cplc.uk%2Cpolice.uk%2Cppg.br%2Cpresse.fr%2Cpro.br%2Cpsc.br%2Cpsi.br%2Cqc.ca%2Cqc.com%2Cqh.cn%2Crec.br%2Crec.ro%2Cres.in%2Csa.com%2Csc.cn%2Csch.uk%2Cse.com%2Cse.net%2Csh.cn%2Csk.ca%2Cslg.br%2Csn.cn%2Cstore.ro%2Ctj.cn%2Ctm.fr%2Ctm.mc%2Ctm.ro%2Ctmp.br%2Ctur.br%2Ctv.br%2Ctv.tr%2Ctw.cn%2Cuk.com%2Cuk.net%2Cus.com%2Cuy.com%2Cvet.br%2Cwaw.pl%2Cweb.ve%2Cwww.ro%2Cxj.cn%2Cxz.cn%2Cyk.ca%2Cyn.cn%2Czj.cn%2Czlg.br'
          3        DO_ICALL                                         $5      
          4        ASSIGN                                                   !0, $5
   10     5        INIT_FCALL                                               'strtolower'
          6        SEND_VAL                                                 'testaa'
          7        DO_ICALL                                         $7      
          8        ASSIGN                                                   !1, $7
   12     9        INIT_FCALL                                               'explode'
         10        SEND_VAL                                                 '.'
         11        SEND_VAR                                                 !1
         12        DO_ICALL                                         $9      
         13        ASSIGN                                                   !2, $9
   13    14        COUNT                                            ~11     !2
         15        ASSIGN                                                   !3, ~11
   16    16        IS_SMALLER                                       ~13     !3, 2
         17      > JMPNZ_EX                                         ~13     ~13, ->25
         18    >   INIT_FCALL                                               'preg_match'
         19        SEND_VAL                                                 '%2F%5E%5Cd%2B%24%2F'
         20        SUB                                              ~14     !3, 1
         21        FETCH_DIM_R                                      ~15     !2, ~14
         22        SEND_VAL                                                 ~15
         23        DO_ICALL                                         $16     
         24        BOOL                                             ~13     $16
         25    > > JMPZ                                                     ~13, ->27
   17    26    > > RETURN                                                   !1
   19    27    >   INIT_FCALL                                               'join'
         28        SEND_VAL                                                 '.'
         29        INIT_FCALL                                               'array_slice'
         30        SEND_VAR                                                 !2
         31        SEND_VAL                                                 -2
         32        DO_ICALL                                         $17     
         33        SEND_VAR                                                 $17
         34        DO_ICALL                                         $18     
         35        ASSIGN                                                   !4, $18
   21    36        IS_SMALLER_OR_EQUAL                              ~20     3, !3
         37      > JMPZ_EX                                          ~20     ~20, ->43
         38    >   INIT_FCALL                                               'in_array'
         39        SEND_VAR                                                 !4
         40        SEND_VAR                                                 !0
         41        DO_ICALL                                         $21     
         42        BOOL                                             ~20     $21
         43    > > JMPZ                                                     ~20, ->53
   22    44    >   INIT_FCALL                                               'join'
         45        SEND_VAL                                                 '.'
         46        INIT_FCALL                                               'array_slice'
         47        SEND_VAR                                                 !2
         48        SEND_VAL                                                 -3
         49        DO_ICALL                                         $22     
         50        SEND_VAR                                                 $22
         51        DO_ICALL                                         $23     
         52      > RETURN                                                   $23
   24    53    > > RETURN                                                   !4
   25    54*     > RETURN                                                   null

End of function stripsubdomain

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
150.04 ms | 1025 KiB | 19 Q