我希望用户能够在他们的公司设置对话框中输入他们的公司网站 URL,但我需要验证这一点。除了典型的清理功能之外,我想检查 URL 方案是否http://
假设https://
用户已经输入了它。
我的函数已经解析输入的 url 以使用正则表达式检测方案,但我想(理想情况下)检查来自服务器 ala file_get_contents 或 parse_url 的 URL 并获取方案,但我不知道该怎么做。
看看parse_url()
。该方案将在scheme
数组的元素中返回。
编辑 1
部分 URL 也被接受,
parse_url()
尽量正确解析它们。
如果 URL 中不存在该方案,则该scheme
元素将丢失。
编辑 2
正如@BenediktOlek 所说,您可以使用 cURL 来查询服务器:
$curl = curl_init();
curl_setopt_array(
$curl,
array(
CURLOPT_URL => 'http://www.example.com/',
CURLOPT_HEADER => TRUE, // Output the response headers
CURLOPT_RETURNTRANSFER => TRUE, // Return output as a string
CURLOPT_NOBODY => TRUE // Use request method "HEAD"
)
);
$curlData = curl_exec($curl);
curl_close($curl);
如果服务器需要 HTTPS 连接,并且配置正确,那么它应该返回Location:
带有 HTTPS URL 的标头。
您可以使用该cURL
模块来查询服务器。但我想假设 http 是安全的。如果不允许使用 http,则正确配置的网络服务器应重定向。
像这样使用parse_url()
with 参数PHP_URL_SCHEME
:
$scheme = parse_url( $url, PHP_URL_SCHEME);
if( !in_array( $scheme, array( 'http', 'https'))){
// Wrong URL
}
// Good URL
if( strncmp( $url, 'http://', 7)){ // 7 = strlen( 'http://')
// Not secured
} else if (strncmp( $url, 'https://', 8)) {
// Secured
} else if ( strpos($url, '://') !== false){
// ftp://, sftp:// and other protocols
// you may do this also by: preg_match and regexp ~^[\w]+://~i - will be more accurate
} else {
// any other URL, www.google.com and so on...
// auto-assue: not secured
}
或者也许这有帮助?
NSRange range = [urlName rangeOfString:@"http://"];
//NSLog(@"found or not found");
if (range.location != NSNotFound)
{
//NSLog(@"range is found");
//range.location is start of substring
//range.length is length of substring
} else
{
//NSLog(@"range is not found");
//urlName = @"http://" urlName;
//NSString *string = [NSString stringWithFormat:@"%@%@", @"Hello", @"World"];
urlName = [NSString stringWithFormat:@"%@%@", @"http://",urlName];
//NSLog(@"NEW urlName......%@", urlName);
}