3

HTML の文字列の中を調べて<img>、属性が相対アドレスであるすべてのタグsrcを絶対 URL に変更する必要があります。したがって、この:

<img src="puppies.jpg">

なる必要があります:

<img src="http://sitename.com/path/puppies.jpg">

属性がすでに絶対<img>であるタグを無視します。src

私は PHP を使用しており、preg_replace(). ヘルプ!ありがとう!

4

2 に答える 2

8

これは正規表現の仕事ではありません。XML/DOM パーサーの仕事です。

DOMDocument を試してみます。

$DOM = new DOMDocument;
$DOM->loadHTML($html);

$imgs = $DOM->getElementsByTagName('img');
foreach($imgs as $img){
    $src = $img->getAttribute('src');
    if(strpos($src, 'http://sitename.com/path/') !== 0){
        $img->setAttribute('src', "http://sitename.com/path/$src");
    }
}

$html = $DOM->saveHTML();
于 2012-04-30T19:10:30.480 に答える
0

これは正規表現の仕事ではありません。XML/DOM パーサーの仕事です。

いいえ、そうではありません。各 src 属性にプレフィックスを追加するだけの場合は、単純な文字列関数を使用し、xml、regex、または dom の解析について考えないことをお勧めします…</p>

$str = str_replace('<img src="', '<img src="http://prefix', $str);

後で間違ったリンク (既に絶対的なリンク) をクリーンアップできます

$str = str_replace('<img src="http://prefixhttp://', '<img src="http://', $str);

回避できる場合は、regexp/dom でコードを爆破しないでください。

于 2012-04-30T19:13:43.897 に答える