"<img class=\"img-responsive\" src=\"http://localhost/example-local/sites/example/files/styles/thumbnail/public/news-story/gallery-images/Desert.jpg?itok=bqyr-vpK\" width=\"100\" height=\"75\" alt=\"\" /><blockquote class=\"image-field-caption\">\r\n <p>Desert</p>\n</blockquote>\r\n"
我只需从此字符串中提取src
我试过这个,但它不适合我:
preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i');
答案 0 :(得分:-1)
正如pekka在评论中所说,PHP已经内置了用于提取标签和这种性质的工具。您的字符串将是何时使用PHP DOM的一个很好的示例。
话虽如此,使用正则表达式,我想你可以匹配src=\"
和结束\"
之间的所有内容。这很简单:
src=\\"(.*?)\\"
你可以一起做这样的事情:
<?php
// SET OUR DEFAULT STRING
$string = "<img class=\"img-responsive\" src=\"http://localhost/example-local/sites/example/files/styles/thumbnail/public/news-story/gallery-images/Desert.jpg?itok=bqyr-vpK\" width=\"100\" height=\"75\" alt=\"\" /><blockquote class=\"image-field-caption\">\r\n <p>Desert</p>\n</blockquote>\r\n";
// USE PREG MATCH TO FIND THE STRING AND SAVE IT IN $matches
preg_match('~src=\\"(.*?)\\"~i', $string, $matches);
// PRINT IT OUT
print $matches[1];
那会给你这个:
http://localhost/example-local/sites/example/files/styles/thumbnail/public/news-story/gallery-images/Desert.jpg?itok=bqyr-vpK
或者你可以使用preg_replace组合这两行,如果这让你感兴趣:
print preg_replace('~.*?src=\\"(.*?)\\".*~is', '$1', $string);
这基本上只匹配所有内容并用(.*?)
中的任何内容覆盖整个字符串。
这是一个有效的演示: