スレッド表示 | フラット表示〕 全トピック 920 件中 857 番目 次≫ ≪前

HTMLに含まれるパスを置換

created: 2003-05-26 15:58 | modified: 2003-05-26 15:58 | reply: 0

[354] HTMLに含まれるパスを置換

user: yagi ホームページ | created: 2003-05-26 15:58
フォームから入力されたURLのコンテンツを取得し、
その中に含まれる相対パスの頭に入力されたURLを付ける正規表現についての質問です。
例えば、フォームから

http://xxx.yyy.zzz/

が入力され、そのコンテンツに含まれる

href="○"
src="○"
background="○"

の○部分が相対パスであった場合に次のように

href="http://xxx.yyy.zzz/○"
src="http://xxx.yyy.zzz/○"
background="http://xxx.yyy.zzz/○"

置換する場合はどうしたらいいでしょうか?
自分なりに考えてみたのが以下の正規表現です。

$contents = @file($_POST[url]);

foreach ($contents as $line) {
$line = preg_replace("/href=(\"|')?(?:\.?\/?)(?!http:\/\/)([^\"']+)(\"|')?/i", "href=$1$_POST[url]$2$3", $line);
}

なんともややこしい正規表現ですが、これだと例えば、

<a href=/dir/sample.txt>サンプル</a>

のようなものを置換することができません(本来、HTMLで文字列はクォートするべきですが)。

もっと、スマートで簡単な正規表現があればぜひ回答をお願いします。

>ちなみに試しに作ったのが以下のものです。

http://chotti.hmc6.net/pgetter/pgetter.php
返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 857 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑