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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
<?php
function substitue1($a, $x) {
$nouvelle_chaine = $a;
preg_match_all('#{(.+)}#Usi', $a, $matches, PREG_SET_ORDER);
if(empty($matches))
return $a;
foreach($matches as $matche)
if(isset($x[$matche[1]]))
$nouvelle_chaine = str_replace($matche[0], $x[$matche[1]], $nouvelle_chaine);
else
return $a;
return $nouvelle_chaine;
}
function substitue2($a, $x) {
foreach($x as $key => $value) {
$a = str_replace("{".$key."}", $value, $a);
}
return $a;
}
function substitue3($a, $x) {
$tokens = explode('{', $a);
$n = count($tokens);
for($i=1;$i<$n;$i++) {
list($var_name, $data) = explode('}', $tokens[$i]);
$tokens[$i] = $x[$var_name].$data;
}
$r = implode('', $tokens);
return $r;
}
$x['nom'] = 'Moran';
$x['prenom'] = 'Bob';
for($i=0;$i<50;$i++) $x['key'.$i] = $i;
$a = "Votre nom est {nom} est votre prénom est {prenom}";
$a = str_repeat($a, 10);
$n = 1000;
$time = microtime();
for($i=0;$i<$n;$i++) {
$resultat = substitue1($a, $x);
}
$dur = microtime() - $time;
echo "1: ".$dur."<br>";
$time = microtime();
for($i=0;$i<$n;$i++) {
$resultat = substitue2($a, $x);
}
$dur = microtime() - $time;
echo "2: ".$dur."<br>";
$time = microtime();
for($i=0;$i<$n;$i++) {
$resultat = substitue3($a, $x);
}
$dur = microtime() - $time;
echo "3: ".$dur."<br>";
?> |
Partager