2009-10-22 79 views
2

$ string = preg_replace(“#[name =([a-zA-Z0-9 .-] +)*]#”,''。“$ 1”,$ string );str_replace在标签名称属性中带连字符的空格

脚本这部分不工作:

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

我需要 “与” 来代替 “ - ”, 我也尝试preg_replace主要preg_replace内,str_ireplace

但这仍然不起作用

回答

5

替换是预先评估而不是每次更换。通过使用preg_replace_callback

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

或者:但是你可以通过使用e modifier in your regular expression这样做

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不能str_replace()使用。 $1并不真正作为变量存在,它只是替换字符串中的占位符。

相关问题