2013-08-21 30 views
-3

此代碼:結合PHP函數

$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); 

上面的例子並不奏效。我想我已經看到它之前,你可以結合功能。

在此先感謝您的幫助。

+2

你要麼有一個困難時期制定的*表達*語法正確*或*您只是想學習編寫你自己的http://php.net/language.functions < - 我建議你後者。因爲第一個是自我嘲諷,所以你應該自己做,讓你感到自豪。讓其他人給你寫一行內容被認爲是在這個瀏覽器遊戲中作弊。 :D – hakre

+0

另外,你的函數的目標是什麼?只是爲了獲得子域? – Fabor

+1

你可能想看看這個http://stackoverflow.com/questions/535336/find-out-subdomain-using-regular-expression-in-php,無論如何:) –

回答

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)); 
+0

感謝您的詳細解釋。正是我需要的信息。 – sg552

+0

嗯,這不會做print_r的問題,不會迴應br的。我想知道它是如何符合問題中的要求的。 ;) – hakre

+0

'print_r'和'
'就是例子。我只需要知道如何在單行中組合多個功能。 – sg552

1

您正在將所有3行混合成一行,但應該採用此格式將1個函數的輸出合併到另一行。

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

你可以連鎖funktions「like」那個。但是,如果你不小心,他們會很難理解。像你這樣的,然後錯誤是很難被發現:

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

1

請試試這個:

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