2014-03-04 105 views
0

我的代碼似乎沒有讓我在搜索框中輸入空格,如果我搜索「hello world」,它會將其搜索爲「helloworld」。我正在使用preg_replace,所以人們不允許使用其他符號,例如(「'!@#$%^ & ()〜`+ - //)這些符號都不包含在內,爲什麼它會替換空格?preg_replace不允許我在我的搜索中輸入空格

代碼:

$search = preg_replace ("#[^0-9a-z]#i","",$search); 
+0

您的替換正在刪除不是0-9,a-z的所有內容。 –

+1

空間也是一個角色。而且它不在a-z和0-9之間,你能否通過教育猜測它爲什麼被剝離? –

回答

1

好吧,讓我打破它,你當它是你的正則表達式查找

[^0-9a-z] 

^- 是指在正則表達式的否定(當然不完全,這意味着「。一切,但...「),然後跟着機智h兩個範圍:0-9和a-z。這意味着任何不屬於這兩個確切集合的字符都會被這個表達式捕獲。這包括阿拉伯字符,特殊字符和空格。爲了讓你想要它,它的工作,你將不得不添加空間表達:

[^0-9a-z ] 

你必須記住,正則表達式是非常字面,他們給幾乎沒有任何迴旋餘地。

相關問題