2011-08-18 61 views
1

我想刪除域擴展.com使用preg_replace()一個字符串,所以例如,如果對象的參數是facebook.com.com將從串擦除。使用preg_replace從字符串中刪除域擴展?

我想這會工作,preg_replace(".com", "", $host);

不幸的是它返回的錯誤:Warning: preg_replace() [function.preg-replace]: No ending delimiter '.' found in

我然後試圖逃跑用反斜槓期間(認爲這是問題),它返回:

Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash

任何意見,答案或信息,將不勝感激! :)。

+0

你並不需要一個正則表達式這一點,嘗試'str_replace函數(」。com」, 「」,$主機)' –

回答

0

你有逃跑的點,但也正則表達式具有在/pattern/的形式,是斜槓

之間
preg_replace("/\.com/", "", $host); 

旁註傳遞,有更好的推薦的方法可以做到這比使用全能常用表達。例如:

$url = explode(".","http://static.facebook.com"); 
echo $url[1]; // facebook 
+0

謝謝:)。當計時器結束時我會接受。我想有可能是更好的方法,如果你不太忙,我愛你引用一個更好的功能;)或確實添加到我當前的代碼:'破滅(,array_slice(爆炸(‘」。’。 」,parse_url( 「http://static.facebook.com」,PHP_URL_HOST)),-2));',它返回'facebook.com'。我試圖改變最後一個參數來簡單地傳遞「facebook」,但沒有用。 – Avicinnian

+0

這似乎很奇怪,但也死簡單:反向輸入,然後檢查,看看是否「商務部」。在位置0處使用strpos($ input,'moc。')'。當然,只有在'.com'之後什麼也沒有。其他方法是查看'strpos()'是否告訴你'.com'從字符位置'strlen($ input)-4'開始。無論如何,你避免了正則表達式。 – Guttsy

+0

@Pixelatron我添加了一個更清潔的方式做到這一點在我的答案,讓我知道這是否會做 – amosrivera

0

您需要包括像這樣的正則表達式的分隔符:

$domain = preg_replace("/\.com$/i", "", $host); 

而且使用$來錨定比賽結束的字符串,以及「臉譜一個「i」爲不區分大小寫的匹配.COM 「