HTML文書内の相対URLを絶対URLに変換する方法
現在,PHPを使って擬似的なプロクシサーバーを作成しています.
動作としては,フォームにURLを入力し,送信,受け取ったPHP側でfile_get_contentsでHTMLデータを受信し,それを出力する物です.
ところが,当然ではありますが相対URLでリンクされていると,その画像やリンク先に遷移することができません.
そこで,リンクをすべて絶対URLに置き換えたいのですが,現在では上手く置き換わりません.(置き換わらない例:https://ssl.kakaku.com/auth/id/login.asp の画像の一部など)
どなたかご教授いただけると幸いです.
よろしくお願いします.
なお,現在の処理は以下のようになっています.
使用関数 HTMLSQL,make_url(下記URLにあるgetAbsURL関数)
http://www.jonasjohn.de/lab/htmlsql.htm
http://www.phppro.jp/qa/2290
---------------------------------------------------------
// HTMLSQLオブジェクトの生成
$htmlsqlObj = new htmlsql();
// 相対URLのリンクを絶対URLへ変換
if(!$htmlsqlObj->connect("string",$html_data)) {
error("エラー",__LINE__);
}
// 絶対URL化ターゲットタグ
$target_tags = array("a"=>"href","link"=>"href","img"=>"src","form"=>"action","script"=>"src","input"=>"src");
$i =0;
while(list($key,$val) = each($target_tags)) {
if(!$htmlsqlObj->query("SELECT {$val} FROM {$key}")) {
error("エラー",__LINE__);
}
$link_array[$i] = $htmlsqlObj->fetch_array();
$i++;
}
// 絶対URL変換
for($i = 0;$i < count($link_array);$i++) {
for($j = 0;$j < count($link_array[$i]);$j++) {
while(list($key,$val) = each($link_array[$i][$j])) {
// 相対パス以外を排除
if(!preg_match("/(http:\/\/)|(ftp:\/\/)|(mailto:)|#/",$val) && $val != "/" && $val != "") {
// 絶対URL化
$full_url = make_url($url,$val);
$val_new = preg_quote($val,"/");
$html_data = preg_replace("/{$val_new}/",$full_url,$html_data);
}
}
}
}
補足
#include<stdio.h> void sub_1(int i){ printf("%d\n",++i); } int main(void){ int i = 1; printf("%d\n",i); sub_1(i); printf("%d\n",i+2); return 0; これは、どう言う意味になるのでしょうか?ご教授下さい。すみませんが。