【发布时间】:2020-02-29 18:34:06
【问题描述】:
我一直无法找到解决我遇到的正则表达式难题的方法。
最近,我从事一个项目,我们需要用锚标签列表替换给定文本中的单词列表。
例如,给定一个字符串
This is a test string
我可能想用
替换“测试”这个词<a target="_blank" href="https://website.com/string-random“>test</a>.
生成的字符串应该是这样的
This is a <a target="_blank" href="https://website.com/string-random“>test</a> string
单词的替换是循环完成的
foreach ($documents as $document)
foreach ($links as $link)
replace keywords
在某些情况下最终会发生的是锚标记中的一些 url 包含可能被替换的单词
例如,给定这个要替换的单词列表
[
{
'keyword': 'test',
'link': 'https://website.com/string-random'
},
{
'keyword': 'string',
'link': 'https://random.com/string'
}
]
所有替换完成后,我上面给出的示例字符串如下所示
This is a <a target="_blank" href="https://website.com/<a target="_blank" href="https://random.com/string“>string</a>-random“>test</a> <a target="_blank" href="https://random.com/string“>string</a>
代替
This is a <a target="_blank" href="https://website.com/string-random“>test</a> <a target="_blank" href="https://random.com/string“>string</a>
目前,我正在寻找一个与特殊字符包围的任何单词都不匹配的正则表达式,因为我认为这可以解决我的问题。
对于如何解决这个问题的任何其他想法也非常开放
【问题讨论】:
标签: php regex preg-replace