PHP无法从页面获取<img/>标记

时间:2018-09-16 11:51:26

标签: php preg-match

我对PHP preg_match函数有疑问。

在CMS DLE中,我尝试从新闻(image-x)中提取图片,但是在通过直接链接引用的模块中。

//remove <p></p> tags
$row[$i]['short_story'] = str_replace( "</p><p>", " ",$row[$i]['short_story'] );

//remove the \" escapes (DLE put it in the MySQL column)
$row[$i]['short_story'] = str_replace("\\\"", " ", $row[$i]['short_story']);

//remove all tags except <img>, but there remains a simple text that is stored without tags
$row[$i]['img'] = strip_tags($row[$i]['short_story'], "<img>");

//try to find <img> (by '>'), to remove the simple text;
preg_match(".*>", $row[$i]['img'], $matches);

// print only <br/> (matches is empty)
print_r($matches."<br/>\n");

例如print_r($row[$i]['img'])

<img src="somelink" class="fr-fic" fr-dib="" alt=""> Some text

我只需要

<img src="somelink" class="fr-fic" fr-dib="" alt="">

1 个答案:

答案 0 :(得分:0)

您用于选择<img>的正则表达式模式不正确。请在模式中使用/<img[^>]+>/。代码应更改为

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

您还可以使用preg_replace()删除<img>之后的其他文本

preg_replace("/(<img[^>]+>)[\w\s]+/", "$1", $string)