有没有办法接受网址并将其更改为.com
?
例如,如果用户要提交www.example.in
,我想检查网址是否有效,并将其更改为www.example.com
。我已经构建了一个正则表达式检查程序,可以检查URL是否有效,但我不完全确定如何检查给定的扩展名是否有效,然后将其更改为.com
编辑:要明确我实际上并没有使用这些网址。我将它们作为用户输入提交到表单中,并且只是存储它们。这些是我想在存储之前对URL做的功能,即全部。
编辑2:一个让这个更清晰的例子 -
$url = 'www.example.co.uk'
$newurl = function($url);
echo $newurl
将产生输出
www.example.com
答案 0 :(得分:1)
您是否在服务器端寻找类似的内容来替换要转换为.coms的所选TLD列表?
<?php
$url = "www.example.in";
$replacement_tld = "com";
# array of all TLDs you wish to support
$valid_tlds = array("in","co.uk");
# possible TLD source lists
# http://data.iana.org/TLD/tlds-alpha-by-domain.txt
# https://wiki.mozilla.org/TLD_List
# from http://stackoverflow.com/a/10473026/723139
function endsWith($haystack, $needle)
{
$haystack = strtolower($haystack);
$needle = strtolower($needle);
return $needle === "" || substr($haystack, -strlen($needle)) === $needle;
}
foreach($valid_tlds as $tld){
if(endsWith($url, $tld))
{
echo substr($url, 0, -strlen($tld)) . $replacement_tld . "\n";
break;
}
}
?>
答案 1 :(得分:0)
问题并不完全清楚,我假设您希望在PHP上创建这个逻辑。
这是解析此类字符串的有用功能:
function parseUrl ( $url )
{
$r = "^(?:(?P<scheme>\w+)://)?";
$r .= "(?:(?P<login>\w+):(?P<pass>\w+)@)?";
$r .= "(?P<host>(?:(?P<subdomain>[\w\.\-]+)\.)?" . "(?P<domain>\w+\.(?P<extension>\w+)))";
$r .= "(?::(?P<port>\d+))?";
$r .= "(?P<path>[\w/]*/(?P<file>\w+(?:\.\w+)?)?)?";
$r .= "(?:\?(?P<arg>[\w=&]+))?";
$r .= "(?:#(?P<anchor>\w+))?";
$r = "!$r!";
preg_match( $r, $url, $out );
return $out;
}
您可以解析URL,验证它,然后从结果数组中重新创建,替换您想要的任何内容。
如果您想练习正则表达式并创建自己的模式 - this site will be best place to do it.
如果您的目标是将用户从一个网址路由到另一个网址或更改URI样式,那么您需要使用mod重写。
实际上,在这种情况下,您将最终配置您的Web服务器,可能是虚拟主机,因为它只会路由列出的域(停放在服务器上的域)。
答案 2 :(得分:0)
301(永久)重定向:永久性地将整个站点指向不同的URL。这是最常见的重定向类型,在大多数情况下都很有用。在此示例中,我们将重定向到&#34; mt-example.com&#34;域:
# This allows you to redirect your entire website to any other domain Redirect 301 / http://mt-example.com/
302(临时)重定向:将整个站点指向其他临时URL。当您拥有临时目标网页并计划在以后切换回主要目标网页时,这对于搜索引擎优化目的非常有用:
# This allows you to redirect your entire website to any other domain Redirect 302 / http://mt-example.com/
有关详情:http://kb.mediatemple.net/questions/242/How+do+I+redirect+my+site+using+a+.htaccess+file%3F
答案 3 :(得分:0)
验证PHP中的URL您可以使用 filter_var()。
filter_var($ url,FILTER_VALIDATE_URL))
然后获取顶级域(TLD)并将其替换为.com,您可以使用以下功能:
$url="http://www.dslreports.in";
$ext="com";
function change_url($url,$ext)
{
if(filter_var($url, FILTER_VALIDATE_URL)) {
$tld = '';
$url_parts = parse_url( (string) $url );
if( is_array( $url_parts ) && isset( $url_parts[ 'host' ] ) )
{
$host_parts = explode( '.', $url_parts[ 'host' ] );
if( is_array( $host_parts ) && count( $host_parts ) > 0 )
{
$tld = array_pop( $host_parts );
}
}
$new_url= str_replace($tld,$ext,$url);
return $new_url;
}else{
return "Not a valid URl";
}
}
echo change_url($url,$ext);
希望这有帮助!