preg_replace_callback

(PHP 4 >= 4.0.5, PHP 5)

preg_replace_callback ? Rechercher/remplacer avec une expression rationnelle et fonction de callback

Description

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit [, int &count]] )

Le comportement de preg_replace_callback() est presque identique à celui de preg_replace(), hormis le fait qu'à la place du paramètre replacement, il faut spécifier une fonction de callback callback qui sera appelée, avec les éléments trouvés en arguments. Cette fonction retourne alors la chaîne de remplacement. Reportez-vous à la documentation sur la fonction preg_replace() pour une description des autres paramètres.

Exemple 1811. Exemple avec preg_replace_callback()

<?php
// Ce texte était vrai en 2002
// nous voulons le mettre a jour pour 2003
$text = "Le premier avril est le 01/04/2002\n";
$text.= "Le dernier no&Icirc;l était le 25/12/2001\n";

// Fonction de callback
function next_year($matches)
{
 
// comme d'habitude : $matches[0] représente la valeur totale
  // $matches[1] représente la première parenthèse capturante
 
return $matches[1].($matches[2]+1);
}

echo
preg_replace_callback(
          
"|(\d{2}/\d{2}/)(\d{4})|",
          
"next_year",
          
$text);

// retourne ceci :
// Le premier avril est le 01/04/2003
// Le dernier no&Icirc;l était le 25/12/2002
?>

Vous aurez souvent besoin de la fonction callback avec preg_replace_callback() à un seul endroit. Dans ce cas, vous pouvez simplement utiliser la fonction create_function() pour déclarer une fonction anonyme comme fonction de callback pour preg_replace_callback(). En faisant cela, vous concentrez toutes les routines liées à votre remplacement à un seul endroit, et nous ne polluez par votre espace de noms de fonctions avec des fonctions à usage unique.

Exemple 1812.  Exemples avec preg_replace_callback() et create_function()

<?php
// Un filtre de ligne de commande Unix pour convertir les lettres
// en majuscule de début des paragraphe en minuscules

$fp = fopen("php://stdin", "r") or die("Impossible de lire la ligne de commande");
while (!
feof($fp)) {
  
$line = fgets($fp);
  
$line = preg_replace_callback(
      
'|<p>\s*\w|',
        
create_function(
          
// Les guillemets simples sont très importants ici
           // ou bien il faut protéger les caractères $ avec \$
          
'$matches',
          
'return strtolower($matches[0]);'
        
),
        
$line
    
);
     echo
$line;
 }
 
fclose($fp);
 
?>

Exemple 1813. Exemple avec preg_replace_callback() en utilisant une structure récursive pour gérer du BB code

<?php
$input
= "plain [indent] deep [indent] deeper [/indent] deep [/indent] plain";

function
parseTagsRecursive($input)
{

 
$regex = '#\[indent]((?:[^[]|\[(?!/?indent])|(?R))+)\[/indent]#';

  if (
is_array($input)) {
  
$input = '<div style="margin-left: 10px">'.$input[1].'</div>';
  }

  return
preg_replace_callback($regex, 'parseTagsRecursive', $input);
}

$output = parseTagsRecursive($input);

echo
$output;
?>

Voir aussi preg_replace(), create_function(), et information à propos de callback type.



Rechercher une fonction PHP

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

5 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Références

  1. Consulter le document html Langue du document: fr Manuel PHP : http://be2.php.net, preg_replace_callback

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-11242
Document créé le 28/02/07 22:09, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/php-rf-function.preg-replace-callback.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,29 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Les hommes n'ont plus le temps de rien connaître. Ils achètent des choses toutes faites chez les marchands. Mais comme il n'existe point de marchands d'amis, les hommes n'ont plus d'amis.

Antoine de Saint-Exupéry [Extrait de Le petit prince]
 
l'infobrol
Nous sommes le Dimanche 03 Juin 2012, 01:32, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)