Php 用下划线替换正则表达式中的空格匹配
我希望链接目标在链接地址中的单词之间有下划线,而不是空格 我的代码如下所示:Php 用下划线替换正则表达式中的空格匹配,php,regex,Php,Regex,我希望链接目标在链接地址中的单词之间有下划线,而不是空格 我的代码如下所示: preg_replace("/\[\[(.+?)\]\]/", '<a href="/XLab/?document=$1">$1</a>', $document->content) preg\u replace(“/\[\[(.+?)\]\]\]/”,“,$document->content) $1的第一次出现应该有下划线而不是空格 谢谢大家!
preg_replace("/\[\[(.+?)\]\]/", '<a href="/XLab/?document=$1">$1</a>', $document->content)
preg\u replace(“/\[\[(.+?)\]\]\]/”,“,$document->content)
$1的第一次出现应该有下划线而不是空格
谢谢大家! 您可以使用
preg\u replace\u回调
,因为您不能在preg\u replace
字符串替换模式中操作反向引用:
$text = "[[Some text]] and [[one more here]]";
echo preg_replace_callback("/\[\[(.+?)]]/", function($m) {
return '<a href="/XLab/?document=' . str_replace(' ', '_', $m[1]) . '">' . $m[1] . '</a>';
}, $text);
$text=“[[Some text]]和[[one more here]]”;
echo preg\u replace\u回调(“/\[\[(.+?)]]]/”,函数($m){
返回“”;
}美元文本);
看
这里,
是匹配对象,包含$m
、整个匹配项和$m[0]
、介于$m[1]
[[/code>和
之间的内容]]
将每个空格替换为str_replace('''.'.'.$m[1])
。替换为.
以单个preg\u Replace('~\s+~u','''.''.',$m[1])
\u替换任何1+空格块
$document->content
有什么,所以很难测试。很可能preg\u replace\u回调
可以与str\u replace('''.'.''.'和$match[1])一起使用