【发布时间】:2019-04-23 01:58:32
【问题描述】:
我正在使用 preg_replace 将文本中的关键字替换为 href 标签,我的正则表达式运行良好,现在我的代码是:
$newstring2 = preg_replace("/\p{L}*?".preg_quote($match[$i])."\p{L}*/ui", "<a href='".$url."' class='link'>$0</a>", $newstring);
唯一的问题是,我需要排除 <a href='https://keyword.cz' title="keyword">keyword</a> 中的任何关键字
这是我找到的https://stackoverflow.com/a/22821650/4928816
那么有人可以帮我将这两个正则表达式合并在一起吗?
例子:
$text = 'this is sample text about something what is text.'
$keyword = 'text'
现在感谢我的正则表达式:
$text= 'this is sample <a href='somelink.php'>text</a> about something what is <a href='somelink.php'>text</a>.'
但如果文本是:
$text= 'this is sample <a href='text.php'>text</a> about something what is <a href='somelink.php'>text</a>.'
这就是我得到的例子:
$text= 'this is sample <a href='<a href='somelink.php'>text.php</a>'><a href='somelink.php'>text</a></a> about something what is <a href='somelink.php'><a href='somelink.php'>text</a></a>.'
更新: 为什么我需要这个。 正在开发功能以在充满标签的特定博客文章中用特定 URL 替换所有关键字。 例如如果
$keyword = 'key';
我需要用 href 标记查找并替换整个世界,例如: Key、Keyword、keyword、keylock、mykey、keys 或 Key、Keyword 支持 UNICODE
【问题讨论】:
-
你能告诉我们一些给定输入的预期输出吗?
-
有没有 reason 你没有使用 DOM 解析器?
-
使用正则表达式无法进行整个 HTML 解析,因为它依赖于匹配开始和结束标记,而这在正则表达式中是不可能的。应该有可能呈现一个将被任何正则表达式错误匹配的 HTML 文件。
-
好的 @Cid 我添加了我如何使用它,
标签: php regex replace preg-replace