簡體   English   中英

檢查URL的最有效方法

[英]Most efficient way to check a URL

我正在嘗試檢查用戶提交的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

請參閱parse_url()函數。 這將在單獨的字符串中為您提供URL的“/ page”部分,然后您可以根據需要進行分析。

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

請參閱parse_url參考。

filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)

更多信息:

http://ca.php.net/filter_var

也許strrpos會幫助你。 它將在字符串中找到字符串的最后一次出現

要檢查URL的格式,您可以使用正則表達式:

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

此外,如果您確實要檢查它是否是有效的URL,您可以檢查URL值以查看它是否實際解析為網頁:

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

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

嘗試使用正則表達式來查看URL是否具有正確的結構。 以下是對此更多閱讀 您需要了解PCRE的工作原理。

您想要的一個簡單示例(免責聲明:未經測試,不完整)。

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

從這里: 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;
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM