尝试使用正则表达式删除新行和空格

时间:2012-09-13 16:29:55

标签: php regex

我试图从我拥有的多行字符串中删除一些换行符和空格,如下所示:

    Toronto (YTZ)
    to
    Montreal (YUL)

我尝试过:

$matched = preg_replace('/[\n]/', '', $string);
var_dump($matched);

但它返回的是:

    Montreal (YUL)

我尝试了各种正则表达式的组合,但它似乎只能找到我指定的内容,替换它,并在匹配的表达式后显示任何内容。

我确信这很简单,但我似乎无法弄明白。

提前致谢!

3 个答案:

答案 0 :(得分:1)

\ n只表示“转到行”,如果它在PHP“\ n”中的双引号之间... ...你的正则表达式应该是"/[\n]/"而不是'/[\n]/'

无论如何,不​​要使用正则表达式,而是使用str_replace("\n",'',$string)。它更快。

答案 1 :(得分:0)

正如Kash已经注意到你,不同操作系统中新行的表达可能会有所不同。 这就是使用PHP_EOL常量的地方。该常数的定义取决于操作系统。

$string = str_replace(PHP_EOL, '', $string);

如果可以在不同的机器上创建字符串,那么最好分别替换“\ r”和“\ n”

$string = str_replace(array("\r", "\n"), '', $string);

答案 2 :(得分:0)

$str = preg_replace('/\n+(?=.)/', " ",
       preg_replace('/^\s*/m', "",
       $str));

检查此代码here