我有一堆文本和HTML,我想要实现的是收集所有匹配特定模式的img标记的css类,并将它们放在循环中。
例如:
<img src="sample1.gif' class="get-this-tag-1" />This is text. This is text. This is text. This is text. This is text. This is text. <img src="sample2.gif' class="image" />This is text. This is text. This is text. This is text. This is text. This is text. <img src="sample3.gif' class="get-this-tag-2" />This is text. This is text. This is text. This is text. This is text. This is text.
在样本中我们有3个不同类的图像:get-this-tag-1,image和get-this-tag-2。我只想检索与 get-this-tag - 匹配的类,并让它们循环播放。
foreach ($classes as $class) {
//do something
}
这可能吗?或者是否有更优化的方式来实现我想要实现的目标?
提前谢谢!
答案 0 :(得分:0)
首先,您不应使用RegExes处理HTML。您可以使用RegExes处理类名,但不能处理HTML。这应该使用proper parser。
来完成你的例子使用Javascript是微不足道的,并且在jQuery中是一个单行。因此,您可能需要查看phpquery,这也使PHP变得容易。根据我的经验,这对于大型网站来说是相当缓慢的事情。
答案 1 :(得分:0)
我已经完成了这是正则表达式,但是使用较新的DOM函数会减少很多痛苦。你没有指定你正在使用的语言,但它似乎是php,它具有足够的功能来完成这项工作:
如果你仍然想使用正则表达式,这可能会让你开始:
$matches = array();
preg_match_all ( '|<img.*>|siU', $data, $matches, PREG_PATTERN_ORDER );
print_r($matches);
答案 2 :(得分:0)
您是否需要知道服务器或浏览器端的类名?如果它只是浏览器端,我建议使用jquery从javascript获取数据。
答案 3 :(得分:0)
我不太清楚你的意思,但是如果你只想检索类名,你可以这样做:
preg_match_all("/get-this-tag-\d+/", $string, $classes);
所有类名称开始whith get-this-tag将在数组$ classes中。