hashspark
@hashspark

Как дополнить регулярное выражение?

Есть регулярное выражение, которое определяет есть ли картинка на странице.
'/(img|src)=("|\')[^"\'>]+/im'

Как возможно его поправить чтобы он определял наличие двух и более картинок? Или получить количество картинок в тексте?

Ps необходимо использовать только php.
  • Вопрос задан
  • 3341 просмотр
Решения вопроса 1
akral
@akral
Не стоит парсить HTML с помощью регулярных выражений.

Но если очень хочется, в вышем случае правильно для этой цели использовать внешний подсчёт результатов выполнения регулярного выражения:
$count = preg_match_all('/(img|src)=("|\')[^"\'>]+/im', $html);
if ($count > 1) ...

Регулярное выражение я бы поправил:
/<img\s+[^>]*src\s*=[^>]+>/i
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Например '/(<img=.*){2,}/i'
Ответ написан
Комментировать
KidsKilla
@KidsKilla
Вот так, например:
var q = 0, urls = [];
innerHTML.replace(/\s+/, ' ').replace(/(?:\r|\n|\s)+/, ' ').replace(
    /<img(?:.+?)?src=("|')(.+?)\1(?:.+?)?>/i, 
    function(mtch, q, url) {
        urls[q++] = url;
    }
);
alert('Картинок - '+q);


Ну или через RegExp.exec()
Ответ написан
darkoff
@darkoff
Если вам требуется только посчитать картинки, без извлечения ссылки на них, рекомендую использовать
substr_count(<код>, "<img ")

int substr_count ( string haystack, string needle )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы