[PHP-users 31461] アンカータグの解釈について

ちさっち heartlake2007 @ yahoo.co.jp
2007年 2月 14日 (水) 04:07:47 JST


先ほどからお世話になっているちさっちです。

プログラムを組んでいるうちに疑問点が出てきたので御存じの方居られましたら
ご教
授願えますでしょうか?

前の質問で助けて頂いたプログラムは論文のテーマ用にインターネットでの語彙
の分
布を調べるべく作っているHTML収集プログラムです。
理系は専門ではないので2ヶ月程前からPHPの勉強を初めてやっとプログラミング
に着
手したところです。

大雑把な動きとしてcurlでページの情報やrobot.txtを取得しながらHTMLを取得(HTT
Pレスポンスが200以外なら取得しない)、アンカータグを解析して次のジャンプ
先を
確保と言った流れで作っています。


これまでアンカータグの解析に関してアンカータグのリンクには絶対パス指定と
相対パ
ス指定があり絶対パスの場合には href="XXXX" の中を取得、相対パスの場合は現
在取
得のURLから相対性を考慮した形で次のジャンプ先を生成しています。

またHTMLドキュメント中<base>タグがある場合は<base href=”xxxxx”>の値を考
慮し
て相対パスから次のジャンプ先を生成していくものだと理解していました。


疑問と言うのは 
「http://desktop.google.com/ja/?utm_source=ja-et-more&utm_medium=et&utm_campaign=ja
」のページにあるアンカータグに<a href="/ja/script-primer.html">があるので
すが、これまでの理解通りにプログラムを実行すると「http://desktop.google.com/ja/?utm_source=ja-et-more&utm_medium=t&utm_campaign=ja/ja/script-primer.html
」となります。

これはジャンプ先としてはNGで、実際にブラウザ上でリンクをクリックした飛び
先は
「http://desktop.google.com/ja/script-primer.html」になります。

HTMLのヘッダ部を見ても<base>タグはないのですがリンクの動きを見るといかに
も
<base>タグがあるかの様な振舞いです。


何故このような動きになるのでしょうか?

また、PHPでこの様なリンクを正しく解釈する為にはどうすればいいでしょうか?


ちなみにFIREFOXと言うブラウザで右クリック>ページ情報>(L)リンクでは正し
い
解釈のURLが記載されておりプログラム的に把握することは不可能ではない(PHP
が
最適かは別にして)と思います。

先ほどの質問同様に基本的な部分での理解不足が原因であると思いますが、ご教
授よろしくお願いできますでしょうか。


ちさっち

--------------------------------------
Start Yahoo! Auction now! Check out the cool campaign
http://pr.mail.yahoo.co.jp/auction/



PHP-users メーリングリストの案内