Heim >Backend-Entwicklung >PHP-Tutorial >怎么用正则匹配带多个属性的html标签

怎么用正则匹配带多个属性的html标签

WBOY
WBOYOriginal
2016-06-23 14:01:401138Durchsuche

标签各式各样,毫无规律,主要还是属性的顺序不清楚




像这种但是属性顺序不同就有好几种,而且还有分别得到 id href class三种属性值,存到\1 \2 \3中(我用的是preg_replace, 因为要将整个标签替换指定格式)

想了好久不知道这个正则怎么写 望高人帮帮忙

我也想过用 
]*)>匹配到后处理属性,再用str_replace替换回去,但这样重复搜索可能会导致资源开销过大吧   还有什么办法可以实现上面的要求呢?高人帮忙啊


回复讨论(解决方案)

推荐你学习一下PHPquery的用法,从此采集不需要再用正则

$s =<<< TXT<a id="home" href="/Home/index" class="btn"><a href="/Home/index" id="home" class="class"><a class="btn" href="/home" id="home">TXT;echo preg_replace_callback('/<a\s(.+)>/i', 'foo', $s);function foo($r) {  preg_match_all('/(\w+)="(.+?)"/', $r[0], $t);  $t = array_combine($t[1], $t[2]);  ksort($t);  $s = '';  foreach($t as $k=>$v) $s .= " $k='$v'";  return "<a$s>";}



谢谢,碰巧我这项目设计到采集,我会去试试的。但这里不是采集部分,而是模板代码分离,因为项目不大就试着自己实现一个小型的模板引擎吧

非常感谢 原来还可以使用回调函数 学习了!也是我看文档不够仔细  感谢

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn