使用正则表达式删除部分文本?

时间:2015-06-12 02:00:31

标签: php html regex

以下是我到目前为止所做的事情: 函数.*?将获取所有内容,直到第一个“此字符”。例如,$html = preg_replace('/alt=".*?"/', '', $html);替换alt="和其他引号之间的所有内容。我的问题是现在我必须处理多个角色。以下是我要替换的文本部分:

<a href="http://feeds.feedburner.com/~ff/TheWindowsClub?a=tjWEu-9hLFk:Jv9oVdSsx2A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TheWindowsClub?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TheWindowsClub?a=tjWEu-9hLFk:Jv9oVdSsx2A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TheWindowsClub?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TheWindowsClub?a=tjWEu-9hLFk:Jv9oVdSsx2A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TheWindowsClub?i=tjWEu-9hLFk:Jv9oVdSsx2A:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TheWindowsClub?a=tjWEu-9hLFk:Jv9oVdSsx2A:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/TheWindowsClub?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TheWindowsClub?a=tjWEu-9hLFk:Jv9oVdSsx2A:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/TheWindowsClub?d=cGdyc7Q-1BI" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/TheWindowsClub/~4/tjWEu-9hLFk" height="1" width="1" alt=""/>

与上次不同,我不能使用引号或其他此类字符。我必须删除整行。我想到的一件事就是做这样的事情:

$html = preg_replace('/<a href=".*?(alt=""/>)/', '', $html);

我认为使用上面的代码会找到此段中的最后一部分并替换内部的所有内容,但它不会替换任何内容。请建议我该怎么做?

在运行上面的代码行之后,输出应该是空的。它应该删除所有这些代码块。

1 个答案:

答案 0 :(得分:1)

<a\s+href.*(alt="[^"]*")?>

或没有引号:

<a\s+href.*(alt="[^"]*"){0,1}>

我们匹配以<a开头的所有内容,后跟至少一个空格,然后按任意字符匹配,直到字符>之前您可能包含零或一个的字符串alt=""的迭代,其中包含之外的任何内容"