2014-03-29 88 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應根據他/她的要求更新它。總的來說,你所說的是真實的:) –

相關問題