2009-12-30 111 views
1

只需從PHP 5.2遷移到5.3,就可以完成很多工作!以下是確定的,還是你會做不同的事情?從ereg_replace移植到preg_replace

$cleanstring = ereg_replace("[^A-Za-z0-9]^[,]^[.]^[_]^[:]", "", $critvalue); 

$cleanstring = preg_replace("[^A-Za-z0-9]^[,]^[.]^[_]^[:]", "", $critvalue); 

感謝所有

回答

3

作爲後續克萊的回答是:

我不熟悉的POSIX正則表達式語法(ereg_ *)兩種,但根據您的標準以下應該做你想要什麼:

$cleanstring = preg_replace('#[^a-zA-Z0-9,._:]#', '', $critvalue); 

這將刪除除az,AZ,0-9和字符串之外的所有內容。

2

我不是那熟悉的ereg_ *功能,但你的預浸版本有幾個問題:

  1. ^手段字符串的開始,所以它在中間不會匹配任何東西;和
  2. 你需要分隔你的正則表達式;

一個例子:

$out = preg_replace('![^0-9a-zA-Z]+!', '', $in); 

注意我使用!劃定正則表達式,但你可以很容易地使用/,〜或其他。上面的內容除了數字和字母之外的所有東

參見Pattern Syntax,特別是Delimiters

+0

啊我看到了,那麼我怎麼會匹配「,._:」等?這是前一段時間寫的,我想我正在嘗試清理字符串並保留所有a-z,A-Z,Number和「,._:」 - 其他所有內容都可以被刪除! – Abs 2009-12-30 00:40:02

+0

正則表達式字符需要轉義(在它們之前放一個\)。這適用於| []() - * +?{}^$ \,分隔符以及其他可能我忘記的字符。 – cletus 2009-12-30 00:57:29