gpt4 book ai didi

php - 减少链接 (URL) 大小

转载 作者:行者123 更新时间:2023-11-30 05:52:02 26 4
gpt4 key购买 nike

是否可以通过 PHP 或 JS 减小链接(以文本形式)的大小?

例如我可能有这样的链接:

http://www.example.com/index.html                     <- Redirects to the root
http://www.example.com/folder1/page.html?start=true <- Redirects to page.html
http://www.example.com/folder1/page.html?start=false <- Redirects to page.html?start=false

目的是找出链接是否可以缩短并仍然指向同一位置。在这些示例中,前两个链接可以减少,因为第一个指向根,第二个具有可以省略的参数。
第三个链接就是这种情况,这里的参数不能省略,也就是说除了去掉http://就不能再减少了。

所以上面的链接会被缩减成这样:

Before: http://www.example.com/index.html
After: www.example.com

Before: http://www.example.com/folder1/page.html?start=true
After: www.example.com/folder1/page.html

Before: http://www.example.com/folder1/page.html?start=false
After: www.example.com/folder1/page.html?start=false

这可以通过 PHP 或 JS 实现吗?

注意:

www.example.com 不是我拥有的域,也不是我可以通过 URL 访问的域。这些链接可能是未知的,我正在寻找类似自动链接缩短器的东西,它可以通过获取 URL 而没有其他任何东西来工作。

实际上,我在考虑像链接检查器这样的东西,它可以检查链接在自动 trim 之前和之后是否有效,如果不能,那么将在 trim 较少的链接版本上再次进行检查。但这似乎有点矫枉过正......

最佳答案

由于您想自动执行此操作,并且您不知道参数如何改变行为,因此您必须通过反复试验来执行此操作:尝试从 URL 中删除部分,然后查看服务器是否响应不同的页面。

在最简单的情况下,它可以像这样工作:

<?php
$originalUrl = "http://stackoverflow.com/questions/14135342/reduce-link-url-size";

$originalContent = file_get_contents($originalUrl);

$trimmedUrl = $originalUrl;

while($trimmedUrl) {
$trialUrl = dirname($trimmedUrl);
$trialContent = file_get_contents($trialUrl);
if ($trialContent == $originalContent) {
$trimmedUrl = $trialUrl;
} else {
break;
}
}

echo "Shortest equivalent URL: " . $trimmedUrl;
// output: Shortest equivalent URL: http://stackoverflow.com/questions/14135342
?>

对于您的使用场景,您的代码会稍微复杂一些,因为您必须依次测试每个参数,看看是否有必要。有关起点,请参阅 parse_url()parse_str()功能。

请注意:此代码非常慢,因为它会对您要缩短的每个 URL 执行大量查询。此外,它可能无法缩短许多 URL,因为服务器可能在响应中包含诸如时间戳之类的内容。这使得问题变得非常困难,这就是为什么像谷歌这样的公司有很多工程师在思考这样的事情:)。

关于php - 减少链接 (URL) 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14135342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com