2011-12-10 31 views
2

我試着使用了preg_replace方法替換匹配的正則表達式,但我得到的錯誤消息腓替換字符相匹配的正則表達式

「警告:的preg_replace():沒有結束符‘_’發現」

$oldString = ""; 
$newString = preg_replace("/[^a-z0-9_]/ig", "", $oldString); 

這裏我想刪除字母,數字和下劃線以外的所有字符。

回答

1

我認爲PHP不喜歡你的尾隨/後的控件g char。我也遇到過這個問題,並且刪除g似乎有所幫助。 preg_replace具有可選的參數,它在您希望增加的字符串之後需要控制您希望限制搜索的次數,默認情況下它是全局的。

The manual表示您將設置第4個參數(限制)的限制,並且如果您想要,您可以傳遞一個第5個參數的參數,這將會給您找到匹配的次數。

對於我的錢,這只是另一件事情,PHP做了1/2的權利,這一切加起來只是一個完美的1/2被認爲是語言。但這不是在這裏,也不在那裏:)

哦,歡迎來到堆棧! :)

+0

我覺得問題就是'''g'''。無論哪種方式,帶有不敏感標誌的'''[^ a-z0-9_]''與無''''[^ A-Za-z0-9_]'''相同。 – FakeRainBrigand

0

首先沒有爲preg_replace修改g

其次,嘗試在你的字符類之後放置一個乘數以取代多於一個字符。

0

RegEx \W表示任何非字母數字下劃線字符。請記住,這也將取代空格。

$oldString = "This, is not _all_ alpha-numeric"; 
$newString = preg_replace("/\W+/", "", $oldString); 
# Gives "Thisisnot_all_alphanumeric" 

$newString = preg_replace("/[^\w ]+/", "", $oldString); 
# Gives "This is not _all_ alphanumeric" 
相關問題