为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
芜湖不芜 2023-09-08 18:20:35
我希望链接目标在链接地址中的单词之间使用下划线而不是空格。我的代码如下所示:preg_replace("/\[\[(.+?)\]\]/", '<a href="/XLab/?document=$1">$1</a>', $document->content)第一次出现的 $1 应该包含下划线而不是空格。谢谢你!
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您可以使用preg_replace_callback,因为您可能无法操作字符串替换模式中的反向引用preg_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);

请参阅PHP 演示

这里,

  • $m是匹配对象,包含$m[0],整个匹配,以及,和$m[1]之间的内容[[]]

  • str_replace(' ', '_', $m[1])将每个空格替换为_. 替换为preg_replace('~\s+~u', '_', $m[1])将任何 1+ 空白块替换为单个_.


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 49 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信