0

ページ上のすべてのリンクを出力していますが、それらをハイパーリンクにしたいと考えています。

問題は、ソース ドキュメントの URL を制御できないことです。相対的な場合もあれば、絶対的な場合もあり、混在している場合もあります。

そもそも絶対リンクを保持しながら、すべての相対リンクを絶対リンクにする簡単な方法はありますか?

私は他の質問を見てきましたが、正規表現などを使用して URL の先頭にサイト ドメインを追加することに重点を置いているようです。これは、すべての URL が相対的な場合にうまく機能します。

重要な場合は、使用しているコードを次に示します。

$html = file_get_contents(-[my url]-);
$doc = new DOMDocument(); 

libxml_use_internal_errors(true); //to hide error messages

$doc->loadHTML($html);
libxml_clear_errors();
$links = $doc->getElementsByTagName('a'); 

foreach($links as $link) 
{
    echo $link->getAttribute('href') . '<br />';
}
4

1 に答える 1

1

次の 3 つのケースがあります。

  1. 絶対 URL - [プロトコル]:// で始まる
  2. ホスト URL に相対的 - / で始まる
  3. ホスト/パスの URL に相対的 - その他すべて

最初に parse_urlif/elseis/else (file_get_contents からのもの)、次に上記の 3 つのポイントに基づいて各リンクを単純化します

于 2013-08-05T21:28:26.203 に答える