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 回答