Le manuel PHP dit que preg_filter()
est identique à preg_replace()
sauf qu'il ne renvoie que les correspondances. Donc, vous pouvez utiliser une combinaison de preg_replace
et array_diff
pour obtenir des résultats comme preg_filter dans PHP 5.2.x. Faites comme ceci:
<?php
$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$pattern = array('/\d/', '/[a-z]/', '/[1a]/');
$replace = array('A:$0', 'B:$0', 'C:$0');
$result = preg_replace($pattern, $replace, $subject);
var_dump($result);
//take difference of preg_replace result and subject
$preg_filter_similar = array_diff($result, $subject);
var_dump($preg_filter_similar);
?>
Cela donne la sortie (avec xDebug installé):
array
0 => string 'A:C:1' (length=5)
1 => string 'B:C:a' (length=5)
2 => string 'A:2' (length=3)
3 => string 'B:b' (length=3)
4 => string 'A:3' (length=3)
5 => string 'A' (length=1)
6 => string 'B' (length=1)
7 => string 'A:4' (length=3)
array
0 => string 'A:C:1' (length=5)
1 => string 'B:C:a' (length=5)
2 => string 'A:2' (length=3)
3 => string 'B:b' (length=3)
4 => string 'A:3' (length=3)
7 => string 'A:4' (length=3)
Ce qui est le même que preg_filter()
output:
Array
(
[0] => A:C:1
[1] => B:C:a
[2] => A:2
[3] => B:b
[4] => A:3
[7] => A:4
)
code coller un exemple de code s'il vous plaît? Il serait beaucoup plus facile de vous aider – alcuadrado
Hah, c'est la première fonction 5.3 que je vois qui n'a pas une douzaine de solutions de contournement dans les commentaires dans le manuel! Si je comprends bien ce qu'il fait, il devrait être assez simple de convertir en utilisant preg_match pour cela, cependant. –