如何删除名称并在域名字符串中保留tld PHP&正则表达式

时间:2014-03-29 12:25:14

标签: php regex string

[PHP]我想剥离域名关键字,只留下TLD。我如何实现它?我在Regex Patterns的帮助下尝试了一些字符串函数,但它们只支持1个域。但你可以看到我有多个条目。

原始字符串:

{
   "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 个答案:

答案 0 :(得分:1)

您不需要正则表达式来实现此目的。您的字符串看起来像有效的JSON。您可以使用json_decode()将其解析为数组(第二个参数设置为TRUE以获取关联数组),然后使用strstr()和{{.删除所有内容3}}:

$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"
}

ltrim()