无法使用php regex删除字符串中的空格和换行符

时间:2014-12-12 07:15:52

标签: php regex string

我的字符串是

$str = '             4/151n';

我的正则表达式是

preg_match_all('/[^!$|@|!|#|%|\^|&|*|(|)|_|\–|\-|+|=|\\|\/|{|}|\[0-9\]|.|,|\|:|;|"|\'|\s+|→|<|>|\~\[\\r\\n\\t\]~]/', $str, $matches);

我的输出是

Array
(
    [0] => �
    [1] => n
)

我需要的输出是

Array
(
    [0] => n
)

让我清楚地解释一下我的要求。 我需要从字符串中删除所有特殊字符,数字,换行符,空格。除上述字符串外,上述正则表达式适用于所有情况。

对于上面的字符串,我在第0个位置得到一些未知字符。需要删除它。

请帮帮我!

提前致谢!

1 个答案:

答案 0 :(得分:3)

  

我需要删除所有特殊字符,数字,换行符,空格

你可以使用:

$str = preg_replace('/\P{L}+/u', '', $str);
//=> n

此处\P{L}+匹配一个或多个具有unicode支持的非字母。

RegEx Demo


更新:基于OP的评论:

  

如果我在一个字符串中有多个单词,我需要将它们放在一个数组中

您可以使用:

if (preg_match_all('/\p{L}+/u', $str, $m))
    print_r($m[0]);

RegEx Demo 2