Bonjour à vous,
Je me heurte à un soucis qui m'étonne forcement.
Soit un texte possédant des tags que je voudrais traiter en fonction de leur syntaxe et de l'environnement.
Je traite les href grace à preg_replace
et comme je veux gérer l'affichage final en fonction de plusieurs critères j'y introduit une autre fonction Lien
function NettoyageTexte($var) {
$var = preg_replace("#href=\"([^\"]*)\"#",Lien('${1}'),$var);
return $var;
}
Ma fonction Lien
function Lien($cible) {
if (preg_match("#mailto#i",$cible)==1) $resultat = "href=\".$cible."\"";
else echo $resultat = "href=\"javascript:javascript:this.location='$cible'\"";
echo $resultat;
}
Le problème c'est que la fonction preg_match ne filtre rien du tout car $cible n'est pas le résultat mais "${1}"
donc preg_match("#mailto#i",$cible) est toujours égal à 0
Donc étonnamment ${1} n'est pas converti en résultat mais reste ${1}, sauf au final comme si RETURN changeait tout car j'ai bien <a href="javascript:this.location='certificat-laboratoire.php'" target="_self"> qui s'affiche.
Donc je sèche complètement sur le pourquoi ${1} n'est pas "traduite" lorsqu'elle est envoyée dans la fonction Lien() et comment je peux faire pour que Lien puisse tester ce qu'on lui envoi.
Si vous avez des pistes je suis preneur.
Merci d'avance
Serveur Linux
Apache
PHP Version 5.3.25