-3

此代码有效:

    $host = parse_url('http://www.cc.joomla.mywebsite.net/paypal.com/myspace.com/login.php', PHP_URL_HOST);

    $host_names = explode(".", $host);
    print_r($host_names);
    echo "<br>";
    $l = array_slice($host_names, -3);
    print_r($l);
    echo "<br>";

    $subdomain = implode(".", $l);
    echo $subdomain;    //final result


是否可以将功能组合在一行中,例如:

$subdomain = implode(array_slice (explode(".", $host)($host_names, -3)(".", $l);

上面的例子不起作用。我想我以前见过它可以在哪里组合功能。

提前感谢您的帮助。

4

4 回答 4

2

只需用您分配给它的表达式替换每个变量:

$host_names = explode(".", $host);
$l = array_slice($host_names, -3);

变成

$l = array_slice(explode(".", $host), -3);

然后

$l = array_slice(explode(".", $host), -3);
$subdomain = implode(".", $l);

变成

$subdomain = implode(".", array_slice(explode(".", $host), -3));
于 2013-08-21T10:28:39.053 回答
1

您将所有 3 行混合为一条,但应该采用这种格式将 1 个函数的输出组合到另一个函数中。

$subdomain = implode(".",array_slice(explode(".", $host), -3));
于 2013-08-21T10:28:41.030 回答
1

您可以“像”那样链接功能。但是,如果您不小心,他们会在意变得难以阅读。像你一样,然后很难找到错误:

implode(array_slice (explode(".", $host)/* this is not a valid function call */($host_names, -3) /* same here*/ (".", $l);

有这么多的函数调用,你真的不希望它们都放在一行中。它不可读。

您可能想编写自己的函数。:http: //php.net/manual/en/functions.user-defined.php

于 2013-08-21T10:28:49.490 回答
1

请试试这个:

$host_names = implode(".", array_slice(explode(".", $host), -3));
于 2013-08-21T10:29:10.113 回答