【问题标题】:preg_replace - only letters and replace spaces for plus characterpreg_replace - 只有字母和替换加号字符的空格
【发布时间】:2013-11-24 12:54:30
【问题描述】:

我想在字符串 PHP 中只接受字母,并将所有空格更改为加号 (+) 字符。此外,我想只接受一个加号。所以这个字符串: $string = 'ex,a-mpl*e s++tri ng'; 应该替换为: $string = 'example+s+tri+ng';

我试过这样: #[^a-zA-Z0-9\+\]# 但这对我没有帮助。

你能帮帮我吗? :)

编辑:

啊,我也想只接受字符串长度为 3 或更多的字符串。

【问题讨论】:

    标签: php regex replace


    【解决方案1】:

    试试这样的事情是否可以作为一个好的起点:

    $string = 'ex,a-mpl*e s++tri ng';
    
    $pattern = array(
        '/([^a-zA-Z\+\s])/',
        '/(\+|\s)+/'
    );  
    
    $replacement = array('', '+');
    
    $result = preg_replace($pattern, $replacement, (strlen($string) > 3) ? $string : false);
    
    var_dump($result); //<- return an empty string if the length is < 3
    

    【讨论】:

      【解决方案2】:

      只有字母和数字

      你已经有了你的正则表达式,使用它

      $str = preg_replace('#[^a-zA-Z0-9\+\]#', '', $str);
      

      替换空格,删除多个空格

      $str = preg_replace('/\s+/', '+', $str);
      

      如何解决这些问题

      我不想粗鲁,但我粘贴的代码只是对示例 #4 的轻微更改,来自此处 http://us2.php.net/en/preg_replace

      这样的问题很常见,php.net 在将示例放在一起方面确实做得很好。所以先尝试在那里搜索!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 2014-01-18
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        相关资源
        最近更新 更多