PHP регулярное выражение для получения класса img - PullRequest
0 голосов
/ 23 августа 2010

У меня есть куча текста и HTML, и я хочу собрать все классы CSS тегов img, соответствующие определенному шаблону, и поместить их в цикл.

Например:

<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 голосов
/ 23 августа 2010

Я не совсем понимаю, что вы имеете в виду, но если вы хотите получить только имя класса, вы можете сделать:

preg_match_all("/get-this-tag-\d+/", $string, $classes);

Все имена классов начинаются с get-this-tagбудет в массиве $ классов.

0 голосов
/ 23 августа 2010

Я сделал это с помощью регулярных выражений, но это намного менее болезненно с новыми функциями DOM. Вы не указали, какой язык вы используете, но, похоже, это php, который имеет соответствующие функции для этой работы:

http://us.php.net/dom

Если вы все еще хотите использовать регулярные выражения, это может помочь вам начать:

$matches = array();
preg_match_all ( '|<img.*>|siU', $data, $matches, PREG_PATTERN_ORDER );
print_r($matches);
0 голосов
/ 23 августа 2010

Вам нужно знать имена классов на сервере или на стороне браузера? Если это только конец браузера, я бы рекомендовал использовать jquery для получения данных из javascript.

0 голосов
/ 23 августа 2010

Прежде всего, вы не должны обрабатывать HTML с помощью RegExes. Вы можете хорошо обрабатывать имена классов с помощью RegExes, но не HTML. Это должно быть сделано с использованием правильного парсера .

Ваш пример будет тривиальным с использованием Javascript и является однострочным в jQuery. Таким образом, вы можете захотеть взглянуть на phpquery , что также облегчает работу PHP. По моему опыту, для больших сайтов это довольно медленный процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...