2014-03-29 30 views
0

[PHP]我想剥离域名关键字,只留下TLD。我如何实现它?我尝试了一些正则表达式模式的字符串函数,但它们只支持1个域。但你可以看到我有多个条目。如何删除域名字符串中的名称并保留tld PHP&Regex

原始字符串:

{ 
    "example.biz":"Available", 
    "example.co":"Available", 
    "example.com":"Unavailable", 
    "example.mobi":"Available", 
    "example.net":"Unavailable", 
    "example.org":"Unavailable" 
} 

想要的输出。

{ 
    "biz":"Available", 
    "co":"Available", 
    "com":"Unavailable", 
    "mobi":"Available", 
    "net":"Unavailable", 
    "org":"Unavailable" 
} 

回答

1

你不需要一个正则表达式来实现这一点。你的字符串看起来像有效的JSON。

$string = <<<'EOD' 
{ 
    "example.biz":"Available", 
    "example.co":"Available", 
    "example.com":"Unavailable", 
    "example.mobi":"Available", 
    "example.net":"Unavailable", 
    "example.org":"Unavailable" 
} 
EOD; 

$jsonArr = json_decode($string, TRUE); 
$result = array(); 

foreach ($jsonArr as $domain => $status) { 
    $newkey = ltrim(strstr($domain, '.'), '.'); 
    $result[$newkey] = $status; 
} 

echo json_encode($result, JSON_PRETTY_PRINT); 

输出:

{ 
    "biz": "Available", 
    "co": "Available", 
    "com": "Unavailable", 
    "mobi": "Available", 
    "net": "Unavailable", 
    "org": "Unavailable" 
} 

可以使用strstr()ltrim().使用json_decode()(设置为TRUE秒参数来获取一个关联数组),然后删除一切其解析到一个数组Online demo

+1

当然......'.co.uk'需要考虑,所有其他顶级域名都被锁定到第二级。如果*“example。”*是一个已知的常数,那么最好只是剥离它,它会在7月份变得更糟 - '.uk' *在第二级开放* –

+0

? – Emissary

+0

@NiettheDarkAbsol:我知道它并没有处理所有的角落案例。这只是一个正确方向的推动。 OP应根据他/她的要求更新它。总的来说,你所说的是真实的:) –

相关问题