1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
<?php
function testRegex($myString) {
$pattern = '#\[BBC \s+ id=\'? ( [^\']+ ) \'? \] ( [^\[]* ) \[/BBC\]#ix';;
print preg_replace_callback($pattern, "format", $myString);
}
function format($matches) {
$myAttribut = $matches[1];
$myValue = $matches[2];
$buffer = "<p class='xxx_$myAttribut'>%s</p>";
switch($myAttribut) {
case '3vr':
$buffer = sprintf($buffer, strtoupper($myValue) );
break;
case '4uy':
$buffer = sprintf($buffer, "[$myValue]" );
break;
default:
$buffer = sprintf($buffer, $myValue );
break;
}
return $buffer;
}
$myString = "Ce [BBC id='3vr']matin[/BBC] un lapin a [BBC id=4uy]tué[/BBC] un chasseur";
/* Resultat attendu:
<p class='xxx_3vr'>MATIN</p> (majuscule)
<p class='xxx_4uy'>[tué]</p> (entourer le texte de crochet)
*/
testRegex($myString); |
Partager