3v4l.org

run code in 300+ PHP versions simultaneously
<?php function escape_possible($chaines, $sepChmp, $dlmtTxt) { $escape_possible = []; if( preg_match_all("#((?<![$dlmtTxt])$dlmtTxt(?!$dlmtTxt)).*?(?1)#su", $chaines, $encadres) ) { foreach( $encadres[0] as $encadre) { if( preg_match_all("#.(?=$sepChmp)#su", $encadre, $escapes) ) { foreach($escapes[0] as $escape) { if(isset($escape_possible[$escape])) $escape_possible[$escape]++; else $escape_possible[$escape] = 1; } } } } arsort($escape_possible); return $escape_possible; } // cas 1 $sepChmp = ';'; $dlmtTxt = '"'; $chaines = '"il a dit ""aie"" ; en criant" "Laurent TOGIER";"19\; Rue Bréa";75006;PARIS Laurent TOGIER;"\; Rue Bréa";75006;PARIS Laurent TOGIER;"19\;";75006;PARIS Laurent TOGIER;"\;";75006;PARIS Laurent TOGIER;"19\; Rue\; Bréa";75006;PARIS Laurent TOGIER;"\;\;";75006;PARIS'; var_dump(escape_possible($chaines, $sepChmp, $dlmtTxt)); /* array(2) { ["\"]=> int(8) [" "]=> int(1) } */ // cas 2 $sepChmp = '§'; // utf-8 $dlmtTxt = '`'; $chaines = '`Laurent TOGIER`§`19/§ Rue Bréa`§75006§PARIS Laurent TOGIER§`/§ Rue Bréa`§75006§PARIS Laurent TOGIER§`19/§`§75006§PARIS Laurent TOGIER§`/§`§75006§PARIS Laurent TOGIER§`19/§ Rue/§ Bréa`§75006§PARIS Laurent TOGIER§`/§/§`§75006§PARIS `il a dit ``aie`` § en criant`'; var_dump(escape_possible($chaines, $sepChmp, $dlmtTxt)); /* array(2) { ["/"]=> int(8) [" "]=> int(1) } */
Output for git.master, git.master_jit, rfc.property-hooks
array(2) { ["\"]=> int(8) [" "]=> int(1) } array(2) { ["/"]=> int(8) [" "]=> int(1) }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
44.66 ms | 401 KiB | 8 Q