我对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="">
答案 0 :(得分:0)
您用于选择<img>
的正则表达式模式不正确。请在模式中使用/<img[^>]+>/
。代码应更改为
preg_match("/<img[^>]+>/", $row[$i]['img'], $matches);
您还可以使用preg_replace()
删除<img>
之后的其他文本
preg_replace("/(<img[^>]+>)[\w\s]+/", "$1", $string)