php – 用于替换不在HTML标签内的内容的正则表达式

我有一个功能,通过扫描博客条目,新闻和某些核心关键字的其他项目,帮助链接我的网站中的页面.然后,它会使用指向相应页面链接替换这些关键字.

我遇到了一个问题,其中一些不应该用链接替换的单词.例如,我的一些HTML表中有一个摘要标记,其中包含表内容的小摘要.例如,我可能有一个看起来像这样的标签

<table width="500" cellspacing="0" cellpadding="4" border="0" summary="This table contains a list of all car parts in inventory along with their corresponding prices">
...
</table>

我的功能错误地用链接替换了像“汽车零件”这样的关键字或短语.我如何构造我的替换正则表达式,在这种情况下不替换它,但如果它出现在段落中,甚至在HTML表格的单元格内,则替换它.

在此先感谢您的任何帮助和指导!

编辑:只是为了澄清,我正在使用PHP来呈现我的页面.在将内容作为HTML输出页面之前,我正在使用str_replace().我希望能够用ereg_replace()替换它,这样我只有在满足某些条件时(即如上所述)才替换内容.对不起,如果这引起任何混乱!

解决方法:

Don’t use regexes to parse HTML.使用PHP DOM:

$DOM = new DOMDocument;
$DOM->loadHTML($str); // Your HTML

//get all tds
$cells = $DOM->getElementsByTagName('td');

// Do stuff to the cells

//get all paragraphs
$paragraphs = $DOM->getElementsByTagName('p');

// Do stuff to the paragraphs

// Etc...

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...