0

我有一个 html 内容,如下所示。

<img title="" style="float: none;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;" src="http://www.mbatious.com/sites/default/files/imagecache/Large/Distchart.jpg" class="imagecache-Large" alt="">

我想用图像文件的名称 (Distchart) 替换空的 alt 和标题文本。如何在 php 中使用 preg_replace 来做到这一点?执行替换操作后,html应该是这样的

<img title="Distchart" style="float: none;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;" src="http://www.mbatious.com/sites/default/files/imagecache/Large/Distchart.jpg" class="imagecache-Large" alt="Distchart">
4

3 回答 3

1

正如 Maxim Kumpan 建议的那样,最好的方法是使用 dom:

$doc = new DOMDocument();
@$doc->loadHTML($html);
$imgs = $doc->getElementsByTagName('img');
foreach($imgs as $img) {
    if (preg_match('~[^/]+(?=\.(?>gif|png|jpe?+g)$)~i', $img->getAttribute('src'), $match)) {
        $name = $match[0];
        if ($img->getAttribute('alt')=='') $img->setAttribute('alt', $name);
        if ($img->getAttribute('title')=='') $img->setAttribute('title', $name);
    }
}
$result = $doc->saveHTML();
于 2013-07-09T18:15:31.893 回答
1

为此,您最好使用DOMDocument。正则表达式 HTML 是一项忘恩负义的任务。

于 2013-07-09T17:53:50.360 回答
0

尝试这个

$oldhtml = '<img title="" style="float: none;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;" src="http://www.mbatious.com/sites/default/files/imagecache/Large/Distchart.jpg" class="imagecache-Large" alt="">'

$newhtml = str_replace($oldhtml, 'alt=""', 'alt="Distchart"');
于 2013-07-09T17:58:36.493 回答