如何检测数据:图像标签

时间:2016-05-22 07:40:42

标签: php regex preg-match preg-match-all

我有summernote WYSIWYG插件,现在每当我添加任何图像时,它都会将图像转换为

<img data-filename="Untitled-1.png" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoUAAAELCAIAAAAgGWu2AA" style="width: 645px;">

现在我想要的只是检测这第一个标签并获得它的src值&amp;将其存储在数据库中以将其显示为特色图像

例如,如果有两个img data-file-name标签

<img data-filename="Untitled-1.png" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoUAAAELCAIAAAAgGWu2AA" style="width: 645px;">

<img data-filename="Untitled-2.png" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoUAAAELCAIAAAAgGWu2AA" style="width: 645px;">

我只想获得Untitled-1.png的s​​rc值,而不是Untitled-2.png,

以下是我尝试的内容

preg_match('/(<img .*?>)/', $go, $img_tag);
$feature = $img_tag[0];

1 个答案:

答案 0 :(得分:1)

使用DOMDocument和DOMXPath轻松地使用HTML结构定位您想要的内容:

$content = <<<'EOD'
<img data-filgename="Untitled-1.png" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoUAAAELCAIAAAAgGWu2AA" style="width: 645px;">
<img data-filgename="Untitled-2.png" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoUAAAELCAIAAAAgGWu2AA" style="width: 645px;">
EOD;

$dom = new DOMDocument;
$dom->loadHTML($content);

$xp = new DOMXPath($dom);

$result = $xp->evaluate('string(//img[@data-filename]/@src)');
#     img node anywhere --------^    ^                ^---- src attribute
#     in the DOM tree                '---- predicate: must have a 
#                                                     data-filename attribute

if (!empty($result))
    echo $result, PHP_EOL;