gpt4 book ai didi

php - 正则表达式 : Replace only in specific context

转载 作者:行者123 更新时间:2023-12-04 06:56:21 24 4
gpt4 key购买 nike

在文本中,我想替换所有出现的 $word来自 [$word]($word) (在 Markdown 中创建链接),但前提是它尚未在链接中。例子:
[$word homepage](http://w00tw00t.org)
应该不是 变得
[[$word]($word) homepage](http://w00tw00t.org) .

因此,我需要检查 $word 是否在 [ 和 ] 之间,只有在不是这样的情况下才替换。

你能想到一个 preg_replace 命令吗?

最佳答案

这并不像你想象的那么简单。以前的答案在许多情况下都会失败。这是一个应该替换不在 [] 内的每个 $word 的:

$text = preg_replace('/\G((?:[^\[]|\[[^\]]*\])*?)('.$word.')/', '$1[$2]($2)', $text)

如果 $word 包含特殊的正则表达式字符,您可能需要 preg_quote它。

示例
$text = 'aa foo bb [foo bar](http://example.com) cc foo dd';
$word = 'foo';
$text = preg_replace('/\G((?:[^\[]|\[[^\]]*\])*?)('.$word.')/', '$1[$2]($2)', $text);
echo $text;

输出:
aa [foo](foo) bb [foo bar](http://example.com) cc [foo](foo) dd

关于php - 正则表达式 : Replace only in specific context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2515606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com