как вернуть регулярное выражение в php вместо замены

Я пытаюсь извлечь первый атрибут 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?

Related of "как вернуть регулярное выражение в 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 …)