我使用 preg_replace 函数。我希望该函数不删除撇号(')字符。所以我希望它把这个词返回为 (o'clock) 。我怎样才能做到这一点?
$last_word = "o'clock.";
$new_word= preg_replace('/[^a-zA-Z0-9 ]/','',$last_word);
echo $new_word;
我使用 preg_replace 函数。我希望该函数不删除撇号(')字符。所以我希望它把这个词返回为 (o'clock) 。我怎样才能做到这一点?
$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 字符串和正则表达式模式混合会很快让人感到困惑。
您使用的正则表达式不会删除“'”(撇号)。相反,由于“。”,它根本不匹配主题字符串。(点)。在这种情况下 preg_replace() 返回 NULL。