我正在尝试检查用户提交的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
答案 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)
此处提供更多信息:
答案 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)
<?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;
?>