如何匹配HTML标记之外的所有内容?
我的伪HTML是:
<h1>aaa</h1>
bbb <img src="bla" /> ccc
<div>ddd</div>
我使用正则表达式
(?<=^|>)[^><]+?(?=<|$)
这会给我:“aaa bbb ccc ddd”
我需要的是一种忽略HTML标签的方法,返回:“bbb ccc”
答案 0 :(得分:6)
正则表达式是一种笨重且不可靠的标记工作方式。我建议使用DOM解析器,例如SimpleHtmlDom:
//get the textual content of all hyperlinks on specified page.
//you can use selectors, e.g. 'a.pretty' - see the docs
echo file_get_html('http://www.example.org')->find('a')->plaintext;
如果您想在客户端上执行此操作,可以使用jQuery之类的库,如下所示:
$('a').each(function() {
alert($(this).text());
});
答案 1 :(得分:0)
查找适当的正则表达式以匹配完整标记(例如,在像http://regexlib.com/这样的库中)并使用替换运算符将其删除 小号///。然后用剩下的。
答案 2 :(得分:0)
谢谢大家,
两者的表达式都是肮脏的工作,但我想要相反的输出。
(\<(.*?)\>)(.*?)(\<\/(.*?)\>)|(<[a-zA-Z\/][^>]*>)
as伪字符串:
<h1>aaa</h1>
bbb <img src="bla" /> ccc
<div>ddd</div> jhgvjhgjh zhg zt <div>ddd</div>
<div>dsada</div> hbhgjh
为简化起见,我使用this tool。