2009-10-22 2 views

Répondre

5

Le remplacement est évalué dès le départ et non à chaque remplacement. Mais vous pouvez le faire soit en utilisant le e modifier in your regular expression:

$string = preg_replace("#\[name=([a-zA-Z0-9 .-]+)*]#e", '"<td><a href=\"$front_page/".str_replace(" ", "-", "$1")."\">$1</a></td>"', $string); 

Ou en utilisant preg_replace_callback:

function callbackFunction($match) { 
    global $front_page; 
    return '<td><a href="'.$front_page.'/'.str_replace(" ", "-", $match[1]).'">'.$match[1].'</a></td>'; 
} 
$string = preg_replace_callback("#\[name=([a-zA-Z0-9 .-]+)*]#", 'callbackFunction', $string); 
1

Je suppose que vous devrez le faire en deux étapes, puisque $1 ne peut pas être utilisé dans str_replace(). $1 n'existe pas vraiment comme une variable, il est seulement un espace réservé dans la chaîne de remplacement.

Questions connexes