0

我使用 preg_replace 函数。我希望该函数不删除撇号(')字符。所以我希望它把这个词返回为 (o'clock) 。我怎样才能做到这一点?

$last_word = "o'clock.";

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

echo $new_word; 
4

5 回答 5

1

尝试:

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

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

于 2012-07-26T12:09:37.183 回答
0

该正则表达式明确删除了字母和数字之外的所有字符。注意前导“^”。所以它会按照你的要求去做。

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

'/[^a-zA-Z0-9\' ]/'
于 2012-07-26T12:09:38.170 回答
0

将您的原件更改'/[^a-zA-Z0-9 ]/'"/[^a-zA-Z0-9 ']/". 这只是在否定字符类中包含撇号。

请参阅在线示例

另外:我的建议是对字符串使用双引号(就像您使用的那样"o'clock."),因为将反斜杠转义与 PHP 字符串和正则表达式模式混合会很快让人感到困惑。

于 2012-07-26T12:09:49.667 回答
0

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

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

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

于 2012-07-26T12:13:49.600 回答
-1

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

于 2012-07-26T12:04:13.850 回答