我有一个动态下载的离线 html 文件,我向最终用户显示
while (!feof($file_handle)) {
$line = fgets($file_handle);
echo $line;
}
fclose($file_handle);
是否有可能,在 javascript 或 php 中,我不介意替换页面上的所有链接,以便所有标签都转到 mysite.com/redirct.php?link_here。感谢您的帮助,祝您有美好的一天:)
我有一个动态下载的离线 html 文件,我向最终用户显示
while (!feof($file_handle)) {
$line = fgets($file_handle);
echo $line;
}
fclose($file_handle);
是否有可能,在 javascript 或 php 中,我不介意替换页面上的所有链接,以便所有标签都转到 mysite.com/redirct.php?link_here。感谢您的帮助,祝您有美好的一天:)
首先,为此,您最好将所有文件内容保存到所有转换的变量中。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 变体以及它们在文本中的显示方式,这变得更加复杂,但它应该为您指明解决方案。