PHP正则表达式获取img类

时间:2010-08-23 01:49:40

标签: php regex

我有一堆文本和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

}

这可能吗?或者是否有更优化的方式来实现我想要实现的目标?

提前谢谢!

4 个答案:

答案 0 :(得分:0)

首先,您不应使用RegExes处理HTML。您可以使用RegExes处理类名,但不能处理HTML。这应该使用proper parser

来完成

你的例子使用Javascript是微不足道的,并且在jQuery中是一个单行。因此,您可能需要查看phpquery,这也使PHP变得容易。根据我的经验,这对于大型网站来说是相当缓慢的事情。

答案 1 :(得分:0)

我已经完成了这是正则表达式,但是使用较新的DOM函数会减少很多痛苦。你没有指定你正在使用的语言,但它似乎是php,它具有足够的功能来完成这项工作:

http://us.php.net/dom

如果你仍然想使用正则表达式,这可能会让你开始:

$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中。