检查URL的最有效方法

时间:2011-11-03 16:48:08

标签: php database forms verification

我正在尝试检查用户提交的URL是否有效,当用户点击提交时,它会直接进入数据库。 到目前为止,我有:

$string = $_POST[url];
if (strpos($string, 'www.') && (strpos($string, '/')))
{
    echo 'Good';
}

提交的页面应该是目录中的页面,而不是主站点,因此http://www.address.com/page 我怎样才能检查第二个/而不考虑来自http://并且不包括.com

示例输入:

 Valid:
     http://www.facebook.com/pageName
     http://www.facebook.com/pageName/page.html
     http://www.facebook.com/pageName/page.*

Invalid:
     http://www.facebook.com
     facebook.com/pageName
     facebook.com

7 个答案:

答案 0 :(得分:1)

请参阅parse_url()功能。这将在单独的字符串中为您提供URL的“/ page”部分,然后您可以根据需要进行分析。

答案 1 :(得分:1)

if(!parse_url('http://www.address.com/page', PHP_URL_PATH)) {
    echo 'no path found';
}

请参阅parse_url参考。

答案 2 :(得分:1)

filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)

此处提供更多信息:

http://ca.php.net/filter_var

答案 3 :(得分:0)

也许strrpos会帮助你。它将在字符串

中找到字符串的最后一次出现

答案 4 :(得分:0)

要检查URL的格式,您可以使用正则表达式:

preg_match [http://php.net/manual/en/function.preg-match.php]是一个好的开始,但需要了解正则表达式才能使其正常工作。

此外,如果您确实想要检查它是否是有效的网址,您可以检查网址值以查看它是否实际解析为网页:

function check_404($url) {
    $return = @get_headers($url);

    if (strpos($return[0], ' 404 ') === false)
        return true;
    else {
        return false;
    }
}

答案 5 :(得分:0)

尝试使用正则表达式查看URL是否具有正确的结构。这是more reading on this。您需要了解 PCRE 的工作原理。

您想要的一个简单示例(免责声明:未经测试,不完整)。

function isValidUrl($url) {
    return preg_match('#http://[^/]+/.+#', $url));
}

答案 6 :(得分:-1)

从这里开始:http://www.blog.highub.com/regular-expression/php-regex-regular-expression/php-regex-validating-a-url/

    <?php
/**
* Validate URL
* Allows for port, path and query string validations
* @param    string      $url       string containing url user input
* @return   boolean     Returns TRUE/FALSE
*/
function validateURL($url)
{
$pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&amp;?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/';
return preg_match($pattern, $url);
}

$result = validateURL('http://www.google.com');
print $result;
?>