Page 1 sur 1

preg_replace_callback ajout d'arguments

Posté : 20 juin 2008, 18:06
par katagoto
Bonjour à toutes et tous,

J'aimerais savoir s'il ne serait pas possible ajouter un argument à une fonction preg_replace callback, je m'explique :

J'ai un preg_replace_callback qui va analyser une chaine et envoyé le résultat sous forme de tableau à une fonction, serait-ce possible d'envoyé en même temps un second argument ?

Posté : 20 juin 2008, 18:52
par Calimero
Tu peux utiliser les variables globales, ou si les globales te défrisent et que tu travailles en objet, tu dois pouvoir passer à la fonction une méthode d'objet à la place de la fonction callback (et accéder aux propriétés de l'objet dans le callback).

C'est pas merveilleux la POO en php ? :lol:

Posté : 20 juin 2008, 19:20
par sadeq
les arguments sont désignés dans l'expression régulière en mettant certaines parties entre parenthèses. Mais on peut transmettre d'autres paramètres globaux à la fonction callback.

Par exemple:
<?php
// Fonction de remplacement
function transformer($trouvés) 
{
  global $param_externe;
  // $trouvés[1] représente la première parenthèse capturante
  // $trouvés[2] représente la deuxième parenthèse capturante
  // $trouvés[3] représente la troisième parenthèse capturante

   // On retourne le résultat attendu par preg_replace_callback
  return $param_externe[0] . " " . strtoupper($trouvés[1]) . " " . $param_externe[1] . " " .  $trouvés[2] . strtoupper($trouvés[3]);
}
// Texte à traiter
$texte = "maman est belle";
$param_externe = array("C'est ma", "qui");

// Expression régulière avec call_back à 3 paramètres entre ()
echo preg_replace_callback("|(maman)(.*)(belle)|", "transformer", $texte); //ça donne : C'est ma MAMAN qui est BELLE
?>

Posté : 20 juin 2008, 19:21
par katagoto
J'y ai pensé pas j'espérait :lol: