0

動的にダウンロードされたオフライン html ファイルがあり、それをエンド ユーザーに表示します。

while (!feof($file_handle)) {
   $line = fgets($file_handle);
   echo $line;

}
fclose($file_handle);

javascript または php で、ページ上のすべてのリンクを置き換えて、すべてのタグを mysite.com/redirct.php?link_here に移動することは可能です。助けてくれてありがとう、良い一日を:)

4

1 に答える 1

0

まず、このためには、すべてのファイルの内容をすべての変換の変数に保存することをお勧めします。fgets は固定サイズのチャンクでデータを取得します。文字列が途切れる可能性があり、それらがリンクであるかどうかを判断することは不可能です。

$buffer = '';
while (!feof($file_handle)) {
   $buffer .= fgets($file_handle);
}
echo $buffer;

fclose($file_handle);

リンクは難しい場合があります。すべてを「http」で開始することを強制していますか、それともサブドメインがスローされますか? いずれにせよ、あなたは正規表現の土地にいます。開始するためのいくつかを次に示します。

$buffer = preg_replace("/(https?:\/\/.+)\s/U", "<a href=\"http://mysite.com/redirct.php?$1\">$1</a>", $buffer);

つまり、「http://」または「https://」で始まる文字列は置換用の URL です。URL は最初のスペース文字で終了します。

$buffer = preg_replace("/\s(www\..+)\s/U", "<a href=\"http://mysite.com/redirect.php?http://$1\">$a</a>", $buffer); 

同様に、これは「www.」で始まる任意の文字列を探します。URLとしてマークします。

これは、URL のさまざまなバリエーションと、それらがテキストでどのように表示されるかによって、はるかに複雑になりますが、解決策を示しているはずです。

于 2013-03-05T18:32:23.507 に答える