从发布的内容中获取特色图片

Get Featured image from Posted Content

我有一个博客系统,用户在 post 内容中输入图像 url,例如 ->

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

然后我想找到这个 [img src] 行并将它用作这样的特色图像-> 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, "", $feature);

谁能解决这里的问题?

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

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参数内匹配组的结果。

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

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

我希望这能解释清楚。