mysql表中包含html数据的正则表达式

mysql表中包含html数据的正则表达式,html,mysql,regex,Html,Mysql,Regex,我有一个在mysql数据库中存储html模板的表。现在我必须对它们执行一些文本替换。然而,我的目标文本也出现在一些锚定标记中,我不希望被替换 例: 。。。(有大量的html垃圾)。。。。。。。。。(更多的html垃圾)。。。(更多的html垃圾) 任务是将正文中出现的“关键字”替换为“新关键字”,而不是URL 如果我能首先找到关键字是给定模板中链接的一部分的情况,这也会很有帮助。MySQL无法进行此类高级字符串操作 但是,如果要让一次性使用PHP脚本进行编辑(即从表中选择,针对每一行处理和更新)

我有一个在mysql数据库中存储html模板的表。现在我必须对它们执行一些文本替换。然而,我的目标文本也出现在一些锚定标记中,我不希望被替换

例:

。。。(有大量的html垃圾)。。。。。。。。。(更多的html垃圾)。。。(更多的html垃圾)

任务是将正文中出现的“关键字”替换为“新关键字”,而不是URL


如果我能首先找到关键字是给定模板中链接的一部分的情况,这也会很有帮助。

MySQL无法进行此类高级字符串操作

但是,如果要让一次性使用PHP脚本进行编辑(即从表中选择,针对每一行处理和更新),则可以执行以下操作:

// foreach row as $row
$newtext = preg_replace("(<a\b.*?>(*SKIP)(*FAIL)|KEYWORD)","NEW KEYWORD",$row['data']);
//foreach行作为$row
$newtext=preg_replace(((*SKIP)(*FAIL)|关键字)”,“NEW关键字”,$row['data']);
这样做的目的是寻找链接(非常接近正则表达式,但在这里几乎所有情况下都应该足够),然后跳过它们。然后,它查找
关键字
,并将其替换为
新关键字

您可以使用此功能快速轻松地处理更换


如果上面提到的“几乎所有情况”还不够,您可以使用
DOMDocument
将HTML加载到解析器中,并仅从那里处理文本节点。

也许您可以找到这样的情况,即关键字是链接的一部分:

SELECT * FROM tbl WHERE html REGEXP '<a[^>]*KEYWORD';
从tbl中选择*其中html REGEXP']*关键字';

我确实有一个ruby脚本来做这件事。想要在Mysql上实现它。约束:)无论如何,谢谢你。给出了案例,仍然在寻找一种方法来替换除此之外的所有内容。对cherry拾取非链接引用有什么建议吗?