2012-07-26 137 views
0

我使用preg_replace函数。我希望函数不要删除撇号(')字符。所以我希望它能把这个词作为(点)。 我该怎么做?使用preg_replace函数删除字符

$last_word = "o'clock."; 

$new_word= preg_replace('/[^a-zA-Z0-9 ]/','',$last_word); 

echo $new_word; 
+0

然后包括在您忽略的人物名单逃脱撇号。 – dnagirl 2012-07-26 12:07:25

+0

那么最终的结果应该是什么?你在寻找什么规则(英文)?是,“删除任何不是字母,数字,空格或撇号的字符”? – 2012-07-26 12:08:11

回答

0

尝试:

$last_word = "o'clock."; 
$new_word= preg_replace('/[^a-zA-Z0-9\' ]/','',$last_word); 
echo $new_word; 

演示在这里:http://ideone.com/JMH8F

-1

您使用的正则表达式不会删除“'”(撇号)。相反,它与主题字符串根本不匹配,因为“。” (点)。在这种情况下,preg_replace()返回NULL。

+0

它返回'oclock'。 http://ideone.com/FoRE7 – 2012-07-26 12:05:12

+0

对不起,你是对的。我会给另一个答案:-( – arkascha 2012-07-26 12:07:19

+0

是否有去(返回)? – user1425871 2012-07-26 12:08:15

0

该正则表达式明确删除所有字符除了的字母和数字。请注意领先的“^”。所以它会做你所要求的。

所以很有可能你要添加的“'”(撇号),以正则表达式中设置排除:

'/[^a-zA-Z0-9\' ]/' 
0

更改原始'/[^a-zA-Z0-9 ]/'"/[^a-zA-Z0-9 ']/"。这仅仅包括了否定字符类中的撇号。

查看online example

另外:我的建议是对字符串使用双引号(与"o'clock."一样),因为混合PHP字符串和正则表达式模式的反斜杠转义可能会很快引起混淆。

相关问题