我在数据中找到某些字词,并用锚标记替换这些关键字。
例如。关键字:迪士尼
数据:
This is temp data -disney-movie-deaths.html nightmare some more text disney This is some more data.
我想将其转换为:
This is temp data -disney-movie-deaths.html nightmare some more text <a href="/test.php">disney</a> This is some more
我使用regx作为:/\bdisney\b/i
但问题在于它将其转换为:
This is temp data -<a href="/test.php">disney</a>-movie-deaths.html nightmare some more text disney This is some more
有人可以面对这类问题吗?
答案 0 :(得分:2)
使用\ s而不是\ b
/\sdisney\s/i
\ b表示单词边界,并包含“ - ”作为匹配字符
答案 1 :(得分:2)
您的逻辑是合理的,但在您的情况下,字边界是不够的。您看到\bdisney\b
匹配-disney-(为什么不应该?)对于您的示例,我在您匹配的单词后面和后面添加了一些空格:
$result = preg_replace('/\s+(disney)\s+/', '<a href="/test.php">$1</a>', $subject);
虽然这适用于此示例,但它可能还不够。例如,它不适用于disney.
您可以根据需要进行修改。
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为这可行:
preg_replace("#(?:\s|\A)(disney)(?:\s|\z)#m", "<a>\1</a>", $text);