Я использую preg_match
для поиска элементов img в xml с определенным шаблоном src или href. Примеры: < img src= "level1/level2/2837"
, < img href ='level1/level2/54322'
.Получить все совпадения с помощью функции regexp preg_match() в PHP
preg_match('/< *\/? *' // Begining of xml element
. 'img' // "img" atribute
. '[^>]*' // Any character except >
. '(?:src|href) *= *' // src or href attribute with possible spaces between =
. '(?:"|\')level1\/level2\/(\d+)(?:"|\')/', // "level1/level2/2837"
$subject, $matches);
Он работает, но возвращает только первый матч.
Например, если объект имеет это содержание:
$subject = "< img src= 'level1/level2/2837'/> <p>something</p> < img href ='level1/level2/54322'";
В результате я получаю это:
$matches => Array
(
[0] => '< img src= "level1/level2/2837"'
[1] => '2837'
)
Как я могу получить все матчи в $matches
массиве?
Я уже использовал simplexml_load_string
для достижения этого, но хотел бы понять, как работают регулярные выражения с preg_match
.
'[SRC | HREF]' в своем регулярном выражении это совершенно неправильно .. –
@AvinashRaj хорошо .. Вы правы, что будет соответствовать один символ благодарности. Я обновляю его – Miguelos