str_replace A标记的name属性中带有连字符的空格

时间:2009-10-22 11:48:29

标签: php regex preg-replace

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

部分脚本不起作用:

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

我需要将“”改为“ - ”, 我也在主preg_replacepreg_replacestr_ireplace

但这仍然无效

2 个答案:

答案 0 :(得分:5)

预先评估更换,而不是每次更换。但您可以使用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);

或者使用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 :(得分:1)

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