我試着使用了preg_replace方法替換匹配的正則表達式,但我得到的錯誤消息腓替換字符相匹配的正則表達式
「警告:的preg_replace():沒有結束符‘_’發現」
$oldString = "";
$newString = preg_replace("/[^a-z0-9_]/ig", "", $oldString);
這裏我想刪除字母,數字和下劃線以外的所有字符。
我試着使用了preg_replace方法替換匹配的正則表達式,但我得到的錯誤消息腓替換字符相匹配的正則表達式
「警告:的preg_replace():沒有結束符‘_’發現」
$oldString = "";
$newString = preg_replace("/[^a-z0-9_]/ig", "", $oldString);
這裏我想刪除字母,數字和下劃線以外的所有字符。
g
在PHP中不受支持,刪除g
修飾符(全局)將執行。
這裏是所有的list of supported modifier
我認爲PHP不喜歡你的尾隨/後的控件g char。我也遇到過這個問題,並且刪除g似乎有所幫助。 preg_replace具有可選的參數,它在您希望增加的字符串之後需要控制您希望限制搜索的次數,默認情況下它是全局的。
The manual表示您將設置第4個參數(限制)的限制,並且如果您想要,您可以傳遞一個第5個參數的參數,這將會給您找到匹配的次數。
對於我的錢,這只是另一件事情,PHP做了1/2的權利,這一切加起來只是一個完美的1/2被認爲是語言。但這不是在這裏,也不在那裏:)
哦,歡迎來到堆棧! :)
首先沒有爲preg_replace
修改g
。
其次,嘗試在你的字符類之後放置一個乘數以取代多於一個字符。
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"
我覺得問題就是'''g'''。無論哪種方式,帶有不敏感標誌的'''[^ a-z0-9_]''與無''''[^ A-Za-z0-9_]'''相同。 – FakeRainBrigand