我有一个功能,通过扫描博客条目,新闻和某些核心关键字的其他项目,帮助链接我的网站中的页面.然后,它会使用指向相应页面的链接替换这些关键字.
我遇到了一个问题,其中一些不应该用链接替换的单词.例如,我的一些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...