2009-12-30 95 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