我已經看到了關於這個確切主題的一堆問題,但似乎沒有一個能夠解決我的問題。我想創建一個功能,將刪除網站地址的所有內容,除了域名。 例如,如果用戶輸入:我想計算器,並以同樣的方式,如果用戶輸入facebook.com/user/bacon我想Facebook的。在PHP中刪除字符串的某些部分
有誰知道一個函數或方法,我可以刪除某些部分的字符串?也許它會搜索http,當發現它會刪除一切,直到//然後它會搜索www,如果發現它會刪除所有東西,直到。然後它將所有內容保存到下一個點,在那裏刪除它後面的所有內容?現在看,這可能會導致網站出現問題http://www.en.wikipedia.org,因爲我只剩下en。
任何想法(最好在PHP中,但也歡迎JavaScript)?
編輯1: 多虧了很好的意見,我想我已經能夠制定出一個函數,做什麼,我想:
function getdomain($url) {
$parts = parse_url($url);
if($parts['scheme'] != 'http') {
$url = 'http://'.$url;
}
$parts2 = parse_url($url);
$host = $parts2['host'];
$remove = explode('.', $host);
$result = $remove[0];
if($result == 'www') {
$result = $remove[1];
}
return $result;
}
它並不完美,至少考慮到子域,但我認爲有可能對此做些事情。也許在結尾添加第二個if語句來檢查數組的長度。如果它大於2,則選擇項目nr1而不是項目nr0。這顯然會給我使用.co.uk的任何域名帶來麻煩(因爲那會長樹項目,但我不想返回co)。我會盡力解決這個問題,看看我想出了什麼。如果你們有些PHP大師可以看一下,我會很高興。我並不熟練或經歷任何的你...:P
沒有直接回答你的問題(因爲它看起來像一個[XY問題](http://www.perlmonks.org/index.pl?node_id=542341)),爲什麼不使用[parse_url函數] (http://php.net/manual/en/function.parse-url.php)? – kojiro 2013-02-13 18:17:36
好的,謝謝。我試着尋找答案,但只發現有人想分裂讓我們說一個字符串,其中包含預設的東西。我不知道在php中有一個函數做了我想要的。非常感謝! :) – Aleksander 2013-02-13 18:19:38
它必須是一個可以訪問當前[tld](https://en.wikipedia.org/wiki/Top-level_domain)或[公共後綴列表](https)列表的例程://en.wikipedia.org/wiki/Public_Suffix_List),以正確分析實際的域名部分,你感興趣的地方開始。 – 2013-02-13 18:21:43