我使用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。