3v4l.org

run code in 300+ PHP versions simultaneously
<?php $a = <<<TEST {De nombreuses entreprises {|dans le {secteur|domaine} {de la communication|des médias|des services|de la vente {|en ligne}|du e-commerce|du commerce en ligne}}|{De nombreuses personnes|De nombreux {cadres|professionnels}} {dont le {métier|rôle} est de {communiquer|gérer la communication|gérer la relation-clients}|qui {travaillent|officient} dans {la communication|les relations avec les clients|la publicité|le marketing}}} {utilisent|se servent de} {notre {service|offre|plateforme|API}|nos {services|offres|plateformes|API}} pour {envoyer leurs SMS|générer du CA|augmenter leurs {ventes|revenus|bénéfices}|gérer leurs campagnes} {|et {ça|cela} {marche|semble marcher}|et {la réussite|le succès} {est|semble|semble être} {là|au rendez-vous}|et tout le monde {{est|semble|semble être} {satisfait|content}|y gagne}}. TEST; $dead = ''; for ($j = 1; $j <= 10; $j++) { $out = array(); if(preg_match("|\{[^\{\}]+\}|",$a)){ $dead = $j; preg_match_all("|\{[^\{\}]+\}|",$a,$out, PREG_PATTERN_ORDER); //print_r($out); $depth = $j; $outCleanned = array_map(function($value) use ($depth) { $value = str_replace('{', 'A' . $depth . 'A', $value); $value = str_replace('|', 'B' . $depth . 'B', $value); $value = str_replace('}', 'C' . $depth . 'C', $value); return $value; }, $out); $b = $a; foreach ($out as $i => $value) { $b = str_replace($value, $outCleanned[$i], $b); } $a = $b; }; //print_r($outCleanned); } /* for ($h = 1; $h <= $depth; $h++) { $tab = str_repeat("\t", $h); $a = str_replace("A".$h."A", "\n".$tab."{", $a); $a = str_replace("B".$h."B", "\n".$tab."|", $a); $a = str_replace("C".$h."C", "\n".$tab."}", $a); } */ for ($h = $depth; $h >= 1; $h--) { $tab = str_repeat("\t", $depth-$h); $a = str_replace("A".$h."A", "\n".$tab."{", $a); $a = str_replace("B".$h."B", "|", $a); $a = str_replace("C".$h."C", "}", $a); } /* $a = str_replace("A4A", "\n{\n", $a); $a = str_replace("B4B", "|", $a); $a = str_replace("C4C", "\n}\n", $a); $a = str_replace("A3A", "\n\t{\n\t", $a); $a = str_replace("B3B", "|", $a); $a = str_replace("C3C", "\n\t}\n\t", $a); $a = str_replace("A2A", "\n\t\t{\n\t\t", $a); $a = str_replace("B2B", "|", $a); $a = str_replace("C2C", "\n\t\t}\n\t\t", $a); $a = str_replace("A1A", "{", $a); $a = str_replace("B1B", "|", $a); $a = str_replace("C1C", "}", $a); */ //echo $depth; echo $a;
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 4
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 77
Branch analysis from position: 77
2 jumps found. (Code = 44) Position 1 = 79, Position 2 = 44
Branch analysis from position: 79
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 44
2 jumps found. (Code = 44) Position 1 = 79, Position 2 = 44
Branch analysis from position: 79
Branch analysis from position: 44
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 39
Branch analysis from position: 10
2 jumps found. (Code = 77) Position 1 = 27, Position 2 = 37
Branch analysis from position: 27
2 jumps found. (Code = 78) Position 1 = 28, Position 2 = 37
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 27
Branch analysis from position: 27
Branch analysis from position: 37
2 jumps found. (Code = 44) Position 1 = 42, Position 2 = 4
Branch analysis from position: 42
Branch analysis from position: 4
Branch analysis from position: 37
Branch analysis from position: 39
filename:       /in/PTbok
function name:  (null)
number of ops:  81
compiled vars:  !0 = $a, !1 = $dead, !2 = $j, !3 = $out, !4 = $depth, !5 = $outCleanned, !6 = $b, !7 = $value, !8 = $i, !9 = $h, !10 = $tab
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%7BDe+nombreuses+entreprises+%7B%7Cdans+le+%7Bsecteur%7Cdomaine%7D+%7Bde+la+communication%7Cdes+m%C3%A9dias%7Cdes+services%7Cde+la+vente+%7B%7Cen+ligne%7D%7Cdu+e-commerce%7Cdu+commerce+en+ligne%7D%7D%7C%7BDe+nombreuses+personnes%7CDe+nombreux+%7Bcadres%7Cprofessionnels%7D%7D+%7Bdont+le+%7Bm%C3%A9tier%7Cr%C3%B4le%7D+est+de+%7Bcommuniquer%7Cg%C3%A9rer+la+communication%7Cg%C3%A9rer+la+relation-clients%7D%7Cqui+%7Btravaillent%7Cofficient%7D+dans+%7Bla+communication%7Cles+relations+avec+les+clients%7Cla+publicit%C3%A9%7Cle+marketing%7D%7D%7D+%7Butilisent%7Cse+servent+de%7D+%7Bnotre+%7Bservice%7Coffre%7Cplateforme%7CAPI%7D%7Cnos+%7Bservices%7Coffres%7Cplateformes%7CAPI%7D%7D+pour+%7Benvoyer+leurs+SMS%7Cg%C3%A9n%C3%A9rer+du+CA%7Caugmenter+leurs+%7Bventes%7Crevenus%7Cb%C3%A9n%C3%A9fices%7D%7Cg%C3%A9rer+leurs+campagnes%7D+%7B%7Cet+%7B%C3%A7a%7Ccela%7D+%7Bmarche%7Csemble+marcher%7D%7Cet+%7Bla+r%C3%A9ussite%7Cle+succ%C3%A8s%7D+%7Best%7Csemble%7Csemble+%C3%AAtre%7D+%7Bl%C3%A0%7Cau+rendez-vous%7D%7Cet+tout+le+monde+%7B%7Best%7Csemble%7Csemble+%C3%AAtre%7D+%7Bsatisfait%7Ccontent%7D%7Cy+gagne%7D%7D.'
    7     1        ASSIGN                                                   !1, ''
    9     2        ASSIGN                                                   !2, 1
          3      > JMP                                                      ->40
   11     4    >   ASSIGN                                                   !3, <array>
   12     5        INIT_FCALL                                               'preg_match'
          6        SEND_VAL                                                 '%7C%5C%7B%5B%5E%5C%7B%5C%7D%5D%2B%5C%7D%7C'
          7        SEND_VAR                                                 !0
          8        DO_ICALL                                         $15     
          9      > JMPZ                                                     $15, ->39
   13    10    >   ASSIGN                                                   !1, !2
   15    11        INIT_FCALL                                               'preg_match_all'
         12        SEND_VAL                                                 '%7C%5C%7B%5B%5E%5C%7B%5C%7D%5D%2B%5C%7D%7C'
         13        SEND_VAR                                                 !0
         14        SEND_REF                                                 !3
         15        SEND_VAL                                                 1
         16        DO_ICALL                                                 
   17    17        ASSIGN                                                   !4, !2
   18    18        INIT_FCALL                                               'array_map'
         19        DECLARE_LAMBDA_FUNCTION                                  '%00%7Bclosure%7D%2Fin%2FPTbok%3A18%240'
         20        BIND_LEXICAL                                             ~19, !4
   23    21        SEND_VAL                                                 ~19
         22        SEND_VAR                                                 !3
         23        DO_ICALL                                         $20     
   18    24        ASSIGN                                                   !5, $20
   25    25        ASSIGN                                                   !6, !0
   26    26      > FE_RESET_R                                       $23     !3, ->37
         27    > > FE_FETCH_R                                       ~24     $23, !7, ->37
         28    >   ASSIGN                                                   !8, ~24
   27    29        INIT_FCALL                                               'str_replace'
         30        SEND_VAR                                                 !7
         31        FETCH_DIM_R                                      ~26     !5, !8
         32        SEND_VAL                                                 ~26
         33        SEND_VAR                                                 !6
         34        DO_ICALL                                         $27     
         35        ASSIGN                                                   !6, $27
   26    36      > JMP                                                      ->27
         37    >   FE_FREE                                                  $23
   30    38        ASSIGN                                                   !0, !6
    9    39    >   PRE_INC                                                  !2
         40    >   IS_SMALLER_OR_EQUAL                                      !2, 10
         41      > JMPNZ                                                    ~31, ->4
   49    42    >   ASSIGN                                                   !9, !4
         43      > JMP                                                      ->77
   50    44    >   INIT_FCALL                                               'str_repeat'
         45        SEND_VAL                                                 '%09'
         46        SUB                                              ~33     !4, !9
         47        SEND_VAL                                                 ~33
         48        DO_ICALL                                         $34     
         49        ASSIGN                                                   !10, $34
   51    50        INIT_FCALL                                               'str_replace'
         51        CONCAT                                           ~36     'A', !9
         52        CONCAT                                           ~37     ~36, 'A'
         53        SEND_VAL                                                 ~37
         54        CONCAT                                           ~38     '%0A', !10
         55        CONCAT                                           ~39     ~38, '%7B'
         56        SEND_VAL                                                 ~39
         57        SEND_VAR                                                 !0
         58        DO_ICALL                                         $40     
         59        ASSIGN                                                   !0, $40
   52    60        INIT_FCALL                                               'str_replace'
         61        CONCAT                                           ~42     'B', !9
         62        CONCAT                                           ~43     ~42, 'B'
         63        SEND_VAL                                                 ~43
         64        SEND_VAL                                                 '%7C'
         65        SEND_VAR                                                 !0
         66        DO_ICALL                                         $44     
         67        ASSIGN                                                   !0, $44
   53    68        INIT_FCALL                                               'str_replace'
         69        CONCAT                                           ~46     'C', !9
         70        CONCAT                                           ~47     ~46, 'C'
         71        SEND_VAL                                                 ~47
         72        SEND_VAL                                                 '%7D'
         73        SEND_VAR                                                 !0
         74        DO_ICALL                                         $48     
         75        ASSIGN                                                   !0, $48
   49    76        PRE_DEC                                                  !9
         77    >   IS_SMALLER_OR_EQUAL                                      1, !9
         78      > JMPNZ                                                    ~51, ->44
   82    79    >   ECHO                                                     !0
         80      > RETURN                                                   1

Function %00%7Bclosure%7D%2Fin%2FPTbok%3A18%240:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/PTbok
function name:  {closure}
number of ops:  28
compiled vars:  !0 = $value, !1 = $depth
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   18     0  E >   RECV                                             !0      
          1        BIND_STATIC                                              !1
   19     2        INIT_FCALL                                               'str_replace'
          3        SEND_VAL                                                 '%7B'
          4        CONCAT                                           ~2      'A', !1
          5        CONCAT                                           ~3      ~2, 'A'
          6        SEND_VAL                                                 ~3
          7        SEND_VAR                                                 !0
          8        DO_ICALL                                         $4      
          9        ASSIGN                                                   !0, $4
   20    10        INIT_FCALL                                               'str_replace'
         11        SEND_VAL                                                 '%7C'
         12        CONCAT                                           ~6      'B', !1
         13        CONCAT                                           ~7      ~6, 'B'
         14        SEND_VAL                                                 ~7
         15        SEND_VAR                                                 !0
         16        DO_ICALL                                         $8      
         17        ASSIGN                                                   !0, $8
   21    18        INIT_FCALL                                               'str_replace'
         19        SEND_VAL                                                 '%7D'
         20        CONCAT                                           ~10     'C', !1
         21        CONCAT                                           ~11     ~10, 'C'
         22        SEND_VAL                                                 ~11
         23        SEND_VAR                                                 !0
         24        DO_ICALL                                         $12     
         25        ASSIGN                                                   !0, $12
   22    26      > RETURN                                                   !0
   23    27*     > RETURN                                                   null

End of function %00%7Bclosure%7D%2Fin%2FPTbok%3A18%240

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.7 ms | 1408 KiB | 23 Q