2

$string = preg_replace("#[name=([a-zA-Z0-9 .-]+)*]#",''."$1",$string);

部分脚本不起作用:

str_replace(' ', '-', "$1")

我需要用“-”替换“”preg_replace ,我也在main里面尝试preg_replacestr_ireplace

但这仍然不起作用

4

2 回答 2

5

替换是预先评估的,而不是在每次替换时进行评估。e但是您可以通过在正则表达式中使用修饰符来做到这一点:

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

或通过使用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);
于 2009-10-22T11:58:26.923 回答
1

我想你必须分两步完成,因为$1不能用于str_replace(). $1并不真正作为变量存在,它只是替换字符串中的占位符。

于 2009-10-22T11:59:40.853 回答