International PHP Conference 2015

preg_filter

(PHP 5 >= 5.3.0)

preg_filterRecherche et remplace avec une expression rationnelle

Description

mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

preg_filter() est identique à preg_replace(), mais elle ne fait que retourner les occurrences trouvées (éventuellement transformées). Pour plus de détails sur le fonctionnement de cette fonction, voyez preg_replace().

Valeurs de retour

Retourne un tableau si le paramètre subject est de type tableau ou une chaîne de caractères autrement.

Si aucune occurrence n'est trouvée ou si une erreur survient, un tableau vide sera retourné lorsque le paramètre subject est un tableau ou NULL sinon.

Exemples

Exemple #1 Exemple de comparaison de preg_filter() avec preg_replace()

<?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'); 

echo 
"preg_filter renvoie\n";
print_r(preg_filter($pattern$replace$subject)); 

echo 
"preg_replace renvoie\n";
print_r(preg_replace($pattern$replace$subject)); 
?>

L'exemple ci-dessus va afficher :

preg_filter renvoie
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
preg_replace renvoie
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)

Voir aussi

  • Les Patterns PCRE
  • preg_quote() - Protection des caractères spéciaux des expressions rationnelles
  • preg_replace() - Rechercher et remplacer par expression rationnelle standard
  • preg_replace_callback() - Rechercher et remplacer par expression rationnelle standard en utilisant une fonction de callback
  • preg_grep() - Retourne un tableau avec les résultats de la recherche
  • preg_last_error() - Retourne le code erreur de la dernière expression PCRE exécutée

add a note add a note

User Contributed Notes 4 notes

up
5
sajina_99 at hotmail dot de
3 years ago
As I had to work with PHP5.2.X and needed preg_filter I wrote a quick and dirty workaround.

<?php
 
if (!function_exists('preg_filter')) {
 
    function
preg_filter($pattern, $replace, $subject, $limit = -1 , &$count = null) {
   
      if(!
is_array($subject)) {
       
$noArray = 1 ;
       
$subject = array($subject);
      }

     
$preg = preg_replace($pattern, $replace, $subject, $limit,  &$count);

     
$diff = array_diff($preg, $subject);
     
      if(
$noArray == 1) $diff = implode($diff) ;

      return
$diff ;
     
    }
   
  }
?>
up
4
MrBertie
4 years ago
Another way to filter an array, and simply return the matching items: preg_grep!
up
-4
fgmhhfg at gmail dot com
1 year ago
As for the php 5.5.3 version, the example  turn out like:
Array
(
       [0] => A:1
       [1] => B:a
       ...
)
up
-7
Anonymous
1 year ago
As for the php 5.5.3 version, the example will turn out like:
Array
(
       [0]=>A:1
       [1]=>B:a
       ...
)
To Top