preg_replace - 仅用字母替换加号字符的空格

时间:2013-11-24 12:54:31

标签: php regex replace

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

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

你能帮帮我吗? :)

编辑:

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

2 个答案:

答案 0 :(得分:3)

尝试这样的事情可能是一个很好的起点:

$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

答案 1 :(得分:0)

只是字母和数字

你已经获得了你的正则表达式,只需使用它

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

替换空格,删除多个空格

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

如何解决此类问题

我不想粗鲁,但我粘贴的代码只是稍微改变了示例#4 http://us2.php.net/en/preg_replace

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