У меня есть строка, внутри которой у меня есть изображение:
"<p><img src="http://yahoo.com/testfolder/userdata/editoruploadimages/confused man.jpg" /></p>"
Я не мог получить URL изображения с моим регулярным выражением. Мой код:
preg_match_all("/src=([^\\s]+)/", $questArr_str, $images);
Этот код останавливает выполнение, когда он встречает пробел в имени изображения. Он возвращает только "http://yahoo.com/testfolder/userdata/editoruploadimages/confused
Возвращаемая строка должна быть: "http://yahoo.com/testfolder/userdata/editoruploadimages/confused man.jpg"
Я поймал все внутри цитат:
preg_match_all('/src="([^"]+)"/', $questArr_str, $images);
Детали, которые читаются ([^\s]+)
означают выбор всего, что не является пространством.
Возможно, попробуйте что-то вроде:
/src="([^"]+)"/
Который выбирает все, что не является двойной цитатой.
Спасибо всем за то, что помогли мне.
Я нашел свое решение, используя:
pattern = "/src=([^\\\"]+)/"
Вот простой способ сопоставить атрибут src
тега <img />
и / или его содержимое в html/PHP
с регулярным выражением.
Образец:
<img class="img img-responsive" title="publisher.PNG" src="media/projectx/agent/author/post/2/image/publisher.PNG" alt="" width="80%" />
Для соответствия только атрибуту содержимого атрибута src
preg_match("%(?<=src=\")([^\"])+(png|jpg|gif)%i",$input,$result)
$result[0]
будет выводить media/projectx/agent/author/post/2/image/publisher.PNG
Чтобы сопоставить атрибут `src 'и использовать его содержимое
preg_match("%src=\"([^\"])+(png|jpg|gif)\"%i",$input,$result)
$result[0]
выведет src="media/projectx/agent/author/post/2/image/publisher.PNG"