使用preg_match在字符串中查找img标记

时间:2011-12-07 13:26:39

标签: php regex

如何在PHP中找到字符串中的HTML标记?

这是我的数据库中的记录:

$str = "This is me <img src='images/mardagz.png' width='200' /> :) when i was 4th year highschool hahah so funny...";

我正在尝试获取<img>标记的内容。这是我正在使用的代码:

$gimg = preg_match('/<img[^>]+\>/i', $str , $matches) ? $matches[1]: '<img src="http://facebook.com/username/profile.png" width="200" />

但是,这段代码总是给我这个错误:Notice: Undefined offset: 1 in mardagz.blog\post.php on line 19

我该怎么办?

2 个答案:

答案 0 :(得分:11)

$matches[1]包含与搜索模式中第一个匹配的文本,但您的模式没有任何组。组用括号定义。

将整个模式放在这样的组中:

preg_match('/(<img[^>]+>)/i', $str, $matches)

或只使用$matches[0]获取匹配的整个文字。

答案 1 :(得分:3)

你可以用正则表达式获取img标签,但如果我是你,我不会使用正则表达式。

我认为更好的想法是使用这样的HTML解析器:http://simplehtmldom.sourceforge.net/

或者您可以使用PHP的DOM库:http://jp.php.net/dom