Aks*_*aje 3 php regex url-shortener
我正在尝试创建一个 php 函数,它将检查传递的 URL 是否是一个短 URL。像这样的东西:
/**
* Check if a URL is a short URL
*
* @param string $url
* return bool
*/
function _is_short_url($url){
// Code goes here
}
Run Code Online (Sandbox Code Playgroud)
我知道更简单且可靠的方法是检查 301 重定向,但此功能旨在保存仅用于检查的外部请求。该函数也不应该检查 URL 短列表,因为这将是一种可扩展性较差的方法。
所以我在想一些可能的检查:
关于可能的方法或更详尽的清单有什么想法吗?
编辑:此功能只是尝试保存外部请求,因此可以为非短网址(但真正的短网址)返回 true。通过此功能后,我无论如何都会通过检查 301 重定向来扩展所有短 URL。这只是为了消除明显的。
我不建议使用正则表达式,因为它太复杂且难以理解。这是用于检查所有约束的 PHP 代码:
function _is_short_url($url){
// 1. Overall URL length - May be a max of 30 charecters
if (strlen($url) > 30) return false;
$parts = parse_url($url);
// No query string & no fragment
if ($parts["query"] || $parts["fragment"]) return false;
$path = $parts["path"];
$pathParts = explode("/", $path);
// 3. Number of '/' after protocol (http://) - Max 2
if (count($pathParts) > 2) return false;
// 2. URL length after last '/' - May be a max of 10 characters
$lastPath = array_pop($pathParts);
if (strlen($lastPath) > 10) return false;
// 4. Max length of host
if (strlen($parts["host"]) > 10) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |