2010-04-13 55 views
18

如何在空格和破折號與PHP中只有短劃線一起出現時替換空格和破折號?下面使用PHP語言在URL中用短劃線替換所有空格和特殊符號

e.g是我的網址

http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes 

在此我想用PHP破折號替換所有特殊字符。在URL中,「陽臺」之後已經有一個破折號。如果我用特殊字符替換短劃線,那麼它變成兩個破折號,因爲URL中已經有一個短劃線,我只需要1個短劃線。

+0

什麼特殊字符? – codaddict 2010-04-13 06:55:29

+0

你想要你的網址成爲什麼? 'HTTP:// kjd.case.150/1- BHK-陽臺-700-平方英尺-spaciou-apartmetn-班德拉 - West'? – Eric 2010-07-23 13:30:30

回答

2

如果連字符周圍最多可以有一個空格,則可以使用John的答案。如果可以有一個以上的空間,你可以嘗試使用preg_replace

$str = preg_replace('/\s*-\s*/','-',$str); 

這甚至會取代-不與任何-包圍的空間!

爲了使它更有效一點,你可以這樣做:

$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str); 

現在,這將確保一個-具有圍繞它至少有一個空格其被替換一段時間。

38

我想說你可能想要其他方式。不是「空格」,而是每個非字母數字字符。 因爲可能有其他字符,在URL不允許(+符號,例如,其被用作空間替換)

因此,爲了從一個自由格式文本一個有效的URL

$url = preg_replace("![^a-z0-9]+!i", "-", $url); 
+0

不應該是正斜槓,而不是感嘆號嗎? – Eric 2010-07-23 13:28:02

+4

你必須先切斷域名,否則你會失去你的點。 – Eric 2010-07-23 13:31:35

+0

working perfect ...謝謝 – Chaitenya 2017-02-21 19:33:26

2

這應該爲你做

strtolower(str_replace(array(' ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string)))); 
1

應用此正則表達式/[^a-zA-Z0-9]/, '-'將與-替換所有非字母數字字符。將它存儲在一個變量中,並再次應用這個正則表達式/\-$/, '',這將逃避最後一個字符。

0

舊胎面,而是幫助一些一個,使用此功能:

function urlSafeString($str) 
{ 
    $str = eregi_replace("[^a-z0-9\040]","",str_replace("-"," ",$str)); 
    $str = eregi_replace("[\040]+","-",trim($str)); 
    return $str; 
} 

就會返回你一個網址安全的字符串

+0

Eregi替換已棄用 http://php.net/manual/fr/function.eregi-replace.php – 2016-12-18 23:10:36

相關問題