我希望链接目标在链接地址中的单词之间使用下划线而不是空格。我的代码如下所示: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+ 空白块替换为单个_
.
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报
0/150
提交
取消