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