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

vor*_*bey 2 php regex preg-replace

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

部分脚本不起作用:

str_replace(' ', '-', "$1")
Run Code Online (Sandbox Code Playgroud)

我需要更换""用" - ",我也尝试preg_replace内主preg_replace,str_ireplace

但这仍然不起作用

Gum*_*mbo 5

更换是预先评估的,而不是每次更换.但是你可以通过e在正则表达式中使用修饰符来实现:

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

或者使用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);
Run Code Online (Sandbox Code Playgroud)