Почему это регулярное выражение не работает?
У меня есть это регулярное выражение:
preg_match_all("/<\s*?img\s[^>]*?src=([\"']??)([^\"' >]*?)\1[^>]*?>/si", $content, $m);
Идея заключается в том, чтобы найти все ссылки на изображения в кусок HTML. Учитывая это содержание:
<p>
<img alt="" src="/emailimg/interdigital_old.jpg" style="width: 377px; height: 245px; " />Some text here.</p><a href="site.html">test</a>
после выполнения регулярных выражений, $ м представляет собой массив с 3-мя пустыми массивами на нем, но если я протестировать его с this site он говорит результат:
Array
(
[0] => Array
(
[0] => <img alt="" src="/emailimg/interdigital_old.jpg" style="width: 377px; height: 245px; " />
)
[1] => Array
(
[0] => "
)
[2] => Array
(
[0] => /emailimg/interdigital_old.jpg
)
)
Что проблема? Это проблема конфигурации?
Обязательная ссылка: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags - при всей серьезности, [DOM] (http: // php .net/manual/en/book.dom.php) и [XPath] (http://www.php.net/manual/en/class.domxpath.php) определенно будет лучше для этой работы. – DaveRandom
Согласовано, использование XPath над DOM было бы предпочтительным способом для этого. –
Согласитесь, но это небольшие фрагменты html, а не полная страница, их легко разобрать с помощью regex – Ivan