使用preg_replace函数删除字符


Removing characters using preg_replace function

我使用preg_replace函数。我希望函数不删除撇号(')字符。所以我希望它将单词返回为(点钟)。我该怎么做?

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

尝试:

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

此处演示:http://ideone.com/JMH8F

该正则表达式显式删除除字母和数字的之外的所有字符。注意开头的"^"。所以它按照你的要求去做。

因此,您很可能希望将"(撇号)添加到正则表达式中的排除集:

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

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

请参阅联机示例。

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

试试这个。这可能会有所帮助。。

$new_word= preg_replace('/''/', '', $last_word);

演示:http://so.viperpad.com/F82z9o

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