用下划线替换正则表达式匹配中的空格

时间:2020-07-30 12:00:54

标签: php regex

我希望链接目标的下划线而不是链接地址中单词之间的空格。

我的代码如下:

preg_replace("/\[\[(.+?)\]\]/", '<a href="/XLab/?document=$1">$1</a>', $document->content)

$ 1的第一次出现应带有下划线而不是空格。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用cypress.json,因为您可能无法操纵preg_replace_callback字符串替换模式中的反向引用:

preg_replace

请参见PHP demo

在这里

  • $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); 是匹配对象,包含$m(整个匹配项)和$m[0]$m[1][[之间的内容
  • ]]str_replace(' ', '_', $m[1])替换每个空格。替换为_,用单个preg_replace('~\s+~u', '_', $m[1])替换任意1个以上的空白块。