查找链接并从HTML中删除它们

时间:2009-11-23 17:00:03

标签: php regex

如何在HTML中查找链接并将其删除?

$html = '<p><a href="javascript:doThis('Test Title 1')">Test Title 1</a></p>';
$html .= '<p><a href="javascript:doThis('Test Title 2')">Test Title 2</a></p>';
$html .= '<p><a href="javascript:doThis('Test Title 3')">Test Title 3</a></p>';

$match = '<a href="javascript:doThis('Test Title 2')">';

我想删除锚点但显示文本。见下文。

Test Title 1

测试题目2

Test Title 3

我之前从未使用过正则表达式,但也许我也可以避免使用它。如果我不清楚,请告诉我。

由于

标记

编辑:它不是客户端的事情。我不能用这个javascript。我有一个自定义CMS,想要编辑存储在数据库中的HTML。

6 个答案:

答案 0 :(得分:4)

你可以尝试最简单的事情:

echo strip_tags($html, '<p>');

除了&lt; p&gt;

之外,它会删除所有标签

如果你真的喜欢regexp:

echo preg_replace('=</?a(\s[^>]*)?>=ims', '', $html);

编辑:

删除 - 标记和周围标记(代码变得混乱,不适用于损坏的(X)HTML):

echo preg_replace('=<([a-z]+)[^>]*>\s*<a(\s[^>]*)?>(.*?)</a>\s*</\\1>=ims', '$3', $html);

如果您的问题很复杂,我建议您尝试xpath

答案 1 :(得分:3)

您可以看到Simple HTML DOM是否有效。

答案 2 :(得分:1)

你可能会对Beautiful Soup感到高兴 - http://www.crummy.com/software/BeautifulSoup/(Python HTML解析/操作API)

答案 3 :(得分:0)

您可以使用

var foo = document.getElementsByTagName('a');

获取所有链接标记。这里不需要正则表达式......

编辑:我正在学习阅读...;)使用PHP的DOM或XML功能。使用它们应该很容易。

答案 4 :(得分:0)

sed -i -e 's/<a.*<\/a>//g' filename.html

请注意,使用正则表达式来破解HTML是一个......可疑的命题,但它可能只是在实践中起作用; - )

答案 5 :(得分:0)

在Microsoft Expression中打开HTML文件。 按Ctrl + F,然后选择替换标签或标签属性内容 简单快捷的解决方案 谢谢 Shomaail