[英]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
參考。
也許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;
}
}
從這里: 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})*)*(\?(&?([-+_~.\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.