【发布时间】:2011-09-28 05:59:09
【问题描述】:
如何匹配HTML标签外的所有内容?
我的伪 HTML 是:
<h1>aaa</h1>
bbb <img src="bla" /> ccc
<div>ddd</div>
我用的是正则表达式,
(?<=^|>)[^><]+?(?=<|$)
这会给我:“aaa bbb ccc ddd”
我所需要的只是一种忽略 HTML 标签的方法,返回:“bbb ccc”
【问题讨论】:
标签: regex
如何匹配HTML标签外的所有内容?
我的伪 HTML 是:
<h1>aaa</h1>
bbb <img src="bla" /> ccc
<div>ddd</div>
我用的是正则表达式,
(?<=^|>)[^><]+?(?=<|$)
这会给我:“aaa bbb ccc ddd”
我所需要的只是一种忽略 HTML 标签的方法,返回:“bbb ccc”
【问题讨论】:
标签: regex
正则表达式是处理标记的笨重且不可靠的方式。我建议使用 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());
});
【讨论】:
寻找一个合适的正则表达式来匹配完整的标签(例如在像http://regexlib.com/这样的库中)并使用替换运算符删除它们 s///。然后使用剩下的。
【讨论】:
谢谢大家,
两者的表达将是肮脏的工作,但我想要相反的输出。
(\<(.*?)\>)(.*?)(\<\/(.*?)\>)|(<[a-zA-Z\/][^>]*>)
作为伪字符串:
<h1>aaa</h1>
bbb <img src="bla" /> ccc
<div>ddd</div> jhgvjhgjh zhg zt <div>ddd</div>
<div>dsada</div> hbhgjh
为简单起见,我使用this tool。
【讨论】: