我有一个博客系统,用户在帖子内容中输入图片网址,例如 - >
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);
任何人都可以在这里调整问题吗?
答案 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
。
我希望这可以解释它。