使用PHP

时间:2016-02-09 10:46:07

标签: regex preg-match

"<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');

1 个答案:

答案 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);

这基本上只匹配所有内容并用(.*?)中的任何内容覆盖整个字符串。

这是一个有效的演示:

https://ideone.com/OvlaQZ