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