如何删除域名并在域名字符串PHP&;中仅保留tld;正则表达式
[PHP]我想去掉域关键字,只留下TLD。我如何做到这一点?我在正则表达式模式的帮助下尝试了一些字符串函数,但它们只支持1个域。但是你可以看到我有多个条目 原始字符串:如何删除域名并在域名字符串PHP&;中仅保留tld;正则表达式,php,regex,string,Php,Regex,String,[PHP]我想去掉域关键字,只留下TLD。我如何做到这一点?我在正则表达式模式的帮助下尝试了一些字符串函数,但它们只支持1个域。但是你可以看到我有多个条目 原始字符串: { "example.biz":"Available", "example.co":"Available", "example.com":"Unavailable", "example.mobi":"Available", "example.net":"Unavailable", "examp
{
"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"
}
您不需要正则表达式来实现这一点。您的字符串看起来像有效的JSON。您可以使用(第二个参数设置为
TRUE
以获得关联数组)将其解析为数组,然后使用和删除
之前的所有内容:
当然
.co.uk
需要考虑,其他锁定到第二级的TLD也需要考虑。当.uk
在第二层打开时,情况只会变得更糟……如果“示例”是一个已知常数,那么最好去掉它?@NiettheDarkAbsol:我知道它不能处理所有的极端情况。这只是朝着正确的方向轻推。OP应根据其要求使用更新。总的来说,你说的是对的:)@使者:我不认为是这样。也许OP用example.tld
?嗯。。。最好假设两个字母域无效(因为它们几乎被普遍限制为非常特定的实体),并在此基础上使用正则表达式。我想角落里的案子少了。
$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"
}