Я пытаюсь извлечь первый атрибут src изображения в блоке HTML-текста следующим образом:
Lorem ipsum <img src="http://example.com/img.jpg" />consequat.
У меня нет проблем с созданием регулярного выражения для соответствия атрибуту src, но как мне вернуть первый сопоставленный атрибут src вместо его замены ?
Из заливки в PHP-руководство кажется, что preg_filter () будет делать трюк, но я не могу полагаться на конечных пользователей с PHP> 5.3.
Все остальные функции регулярных выражений PHP, по-видимому, представляют собой варианты preg_match (), возвращающие логическое значение или preg_replace, что заменяет собой что-то. Есть ли простой способ вернуть регулярное выражение в PHP?
Вы можете использовать третий параметр preg_match
, чтобы узнать, что соответствовало (это массив, переданный по ссылке) :
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags [, int $offset ]]] )
Если указаны совпадения, то они заполняются результатами поиска.
$matches[0]
будет содержать текст, сопоставляемый с полным шаблоном,$matches[1]
будет иметь текст, который соответствует первому захваченному подшаблону в скобках и т. д.
Например, с этой частью кода:
$str = 'Lorem ipsum dolor sit amet, adipisicing <img src="http://example.com/img.jpg" />consequat.'; $matches = array(); if (preg_match('#<img src="(.*?)" />#', $str, $matches)) { var_dump($matches); }
Вы получите этот результат:
array 0 => string '<img src="http://example.com/img.jpg" />' (length=37) 1 => string 'http://example.com/img.jpg' (length=23)
(Обратите внимание, что мое регулярное выражение слишком упрощенно, и это регулярное выражение, как правило, не является «правильным инструментом», когда дело доходит до извлечения данных из некоторой строки HTML …)