【问题标题】:Removing characters using preg_replace function使用 preg_replace 函数删除字符
【发布时间】:2012-07-26 11:59:38
【问题描述】:

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

$last_word = "o'clock.";

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

echo $new_word; 

【问题讨论】:

  • 然后在您忽略的字符列表中包含和转义撇号。
  • 那么最终结果应该是什么?您正在寻找什么规则(英文)?是不是“删除任何不是字母、数字、空格或撇号的字符”?

标签: php preg-replace


【解决方案1】:

试试:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      查看online example

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 还有回来(点)吗?
          猜你喜欢
          • 2012-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-25
          • 2014-06-18
          相关资源
          最近更新 更多