为html元素匹配属性的Regexp
我正在使用正则表达式模式从html元素中提取标记和属性。但是我在匹配属性时遇到了一些问题:s。只有最后一个属性存储到matches数组中 代码如下:为html元素匹配属性的Regexp,regex,Regex,我正在使用正则表达式模式从html元素中提取标记和属性。但是我在匹配属性时遇到了一些问题:s。只有最后一个属性存储到matches数组中 代码如下: <?php $subject = '<font face="arial" size="1" color="red">hello world!</font>'; $find= '/<(?P<tag>\w+)\s+((?P<attr>\w+)=(?P<value>[
<?php
$subject = '<font face="arial" size="1" color="red">hello world!</font>';
$find= '/<(?P<tag>\w+)\s+((?P<attr>\w+)=(?P<value>[^\s""\'>]+|"[^"]*"|\'[^\']*\')\s*)*\/?>/si';
preg_match_all( $find, $subject, $matches );
?>
一些要点:
- 您不应该使用正则表达式来解析HTML。PHP有许多优秀的HTML解析库
- 在比赛中重复捕获的组只保留最后一次捕获。
- 一个值得注意的例外是.NET正则表达式
- (是的!.NET保留所有中间捕获!)