如何在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
我该怎么办?
答案 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