2012-02-16 68 views
0

我有一个领域,我要求所需的域名,现在它来到一个点,一些用户包括www.desireddomain领域。具有此值,域名注册商API我将返回一个错误。我想到的方法是使用preg_replace()在句点(包括句点)之前省略任何字符。我有一个<select>包含(.COM,.BIZ,.ORG,.NET)干净的主机名

$desired_domain = "www.desireddomain"; // user input 
$will_be = "desireddomain"; // final output after preg_replace() ? 

而且也没有这个限制了我只期间或有什么我更应该知道吗?谢谢。

+0

你最后过滤了可能的.com或斜杠吗? – Max 2012-02-16 02:44:20

+2

有很多他们可以输入的形式将是无效的,你需要强有力地验证用户输入 – 2012-02-16 02:45:03

+0

可能重复[如何验证PHP中的域名?](http://stackoverflow.com/questions/1755144)/how-to-validate-domain-name-in-php) – 2012-02-16 02:45:58

回答

1

由于您没有进行“模糊”搜索,因此不需要使用正则表达式。如果有一段时间,只需从上一段时间开始。

if (strrpos('www.domain','.')!==false) { 
    $domain = substr('www.domain',strrpos('www.domain','.')+1); 
} 

另外,如果你想确保他们没有进入.COM,.BIZ,.ORG,.NET,使用爆炸并做了检查。

$parts = explode('.', 'www.desireddomain.com.net'); 
$domain = array_pop($parts); 
$invalid_parts = array('com','biz','org','net'); 
if (in_array($domain, $invalid_parts) && count($parts)>0) { 
    $domain = array_pop($parts); 
} else { 
    // No valid domain submitted 
} 

在这个例子中,他们被要求使用“COM”作为域名,即使它没有有效的。你可以创建一个循环来代替,直到你找到一个有效的部分或用完的项目之前,你可以连续地将项目从数组中移出。

+0

你坚持www只 – 2012-02-16 02:58:39

+0

感谢这一点,但如果输入是“www.ddmomain.com.net”? – 2012-02-16 03:11:20

+0

根据你的问题,.com/.net/.org在一个下拉菜单中,所以域名将是“net”,我的例子会返回。 www.ddmomain.com将是子域名。 – 2012-02-16 03:33:12

0

使用正则表达式/^.*\./,如:

$desired_domain = "www.desireddomain"; 
$will_be = preg_replace("/^.*\./","",$desired_domain); 
print $will_be; //Outputs "desireddomain" 

请记住,但是,有许多品种的无效数据,用户可以输入你最好告诉用户一个一组限制,然后根据正则表达式检查它们以获取有效输入。

+0

如果'$ desired_domain =“www.desireddomain.com.net”;',我该如何挑选域名? – 2012-02-16 03:02:19

+0

@boy:你真的需要在开始时过滤掉很多东西 - www或者HTML,或者说'; - ...如果某人粘贴了完整的URL,那么 – Max 2012-02-16 03:08:24

+0

为此,你可以使用' /(^。*?\。|(\ .. *?){2})/'为正则表达式,但在此之后它开始变得乏味。用户可以根据自己的需要放置尽可能多的'.com'和'.net'。你可以告诉用户只输入所需的域,并使用'/ \ w + /'进行验证。 – wecsam 2012-02-16 03:12:49