我有一个功能,通过扫描某些核心关键字的博客条目,新闻和其他项目,有助于链接我网站中的网页。然后,它会用相应页面的链接替换这些关键字。
我遇到了一些问题,其中一些不应该用链接替换的单词。例如,我的一些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()替换它,这样只有在满足某些条件时才会替换内容(即如上所述)。对不起,如果这引起任何混淆!
答案 0 :(得分:6)
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...