プロが教えるわが家の防犯対策術!

PHPでWebページのソースを取得して
そのソースの中の<img>タグの
src属性がもしhttp://で始まらなかった場合
取得したURLをsrc属性に加える方法はないでしょうか?


URL=http://www.○○.com
ソース
<img src="/image/01.jpg">

<img src="http://www.○○.com/image/01.jpg">
に変更したいです。
よろしくお願いします。

A 回答 (2件)

正規表現で置換すれば所望のことはできます。


<?php
$html=<<<EOD
<img src="/image/01.jpg">
<img src="http://www.○○.com/image/02.jpg">
<img src="/image/03.jpg">
EOD;

$ptn='|<img\s+src\s*=\s*"(/[^>]*>)|';
$replace='<img src="http://www.○○.com$1';
$html=preg_replace($ptn,$replace,$html);
echo $html;
?>

但し上記例は 相対パスでのリンクまでは対応していません。 
    • good
    • 0
この回答へのお礼

回答していただきありがとうございました。
二方のアドバイスにより無事問題を解決することができました。
本当にありがとうございました。

また、質問する機会がありましたらよろしくお願いします。

お礼日時:2009/01/25 22:54

ファイルを読み書きしながら、


str_replace("src=\"/image","src=\"http://www.example.com/image",data);
のようにすればいいと思います。

あるいは、imgタグだけじゃなくてaタグも含めて、urlにhttp://~を追加したいのなら、baseタグを使うことを考えても良いでしょう。
<html><head>
<base href="http://www.example.com/">
</head><body>
<a href="/next/page.html">つぎ</a>
<img src="/image/01.jpg">
</body></html>
と書くと、リンク先や画像の場所はwww.example.comになります。
    • good
    • 0
この回答へのお礼

取得したソースのhead部分にbaseタグを挿入することで画像を表示することができました。
迅速で的確な回答ありがとうございました。

お礼日時:2009/01/25 22:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!