我想在文本中得到一个所有打开和关闭的html标签。
我指的是这个模式:<[a-z]+>和</[a-z]+> (不考虑带数字或任何属性的标签或任何xhtml自封闭标签)
我的意思是使用2个preg_match_all来获取它们:
preg_match_all( '#<([a-z]+)>#i' , $html, $start, PREG_OFFSET_CAPTURE );
preg_match_all( '#<\/([a-z]+)>#i' , $html, $end, PREG_OFFSET_CAPTURE );第一个将把所有标记放在数组$start中,第二个放在$end中。
有没有办法只用一个preg_match_all实例就能得到em?(我认为只有1个preg的函数会快得多)
谢谢
发布于 2011-04-21 02:09:50
preg_match_all( '#</?([a-z]+)>#i' , $html, $start, PREG_OFFSET_CAPTURE );将同时捕获开始标记和结束标记。
发布于 2011-04-21 02:09:35
考虑一下
preg_match_all( '#</?([a-z]+)>#i' , $html, $end, PREG_OFFSET_CAPTURE );意味着/可能在那里,也可能不在那里。
发布于 2011-04-21 02:12:28
请阅读有关使用正则表达式解析超文本标记语言的this answer。这是堆栈溢出历史上评分最高的答案。然后阅读该帖子中的一些其他答案,以获得执行此操作的适当工具。
https://stackoverflow.com/questions/5734671
复制相似问题