从发布内容中获取精选图片

时间:2016-04-09 14:56:46

标签: php regex preg-replace preg-match

我有一个博客系统,用户在帖子内容中输入图片网址,例如 - >

hey how are you <img src="www.example.com/image.png" style="height=100px;">

然后我想找到这个[img src]行并将其用作这样的特色图像 - &gt; www.example.com/image.png

这是我尝试过的: $ content是从表单中发布的内容

preg_match('/(<img .*?>)/', $content, $img_tag);
$feature = $img_tag[0];   // This preg_match finds img src tag and provide me
$regex = '~<img.*?src=[\'"](?:view-source:)?([^"\']+).*?\/?>~';

$featured = preg_replace($regex, "$1", $feature);

任何人都可以在这里调整问题吗?

1 个答案:

答案 0 :(得分:1)

如果您尝试提取内容中第一个src标记的<img>属性,您只需要:

preg_match_all('/<img.*src="(.*)"/', $content, $matches);

$featured = isset($matches[1][0]) ? $matches[1][0] : null;

现在让我解释一下这里发生了什么:

preg_match_all与整个字符串匹配,而preg_match在第一行停止,除非您添加s修饰符。

对于$matches数组,第一个索引代表匹配组。匹配组的编号是从表达式开头到组的(计数。 0匹配整个表达式。因此$matches[1]代表src参数内匹配组的结果。

从该数组中,我们取第一个元素,即内容中第一个匹配的src标记的img属性。

当然,内容中不必有任何图像,这就是为什么在尝试访问结果之前应该调用isset

我希望这可以解释它。