我试图从我拥有的多行字符串中删除一些换行符和空格,如下所示:
Toronto (YTZ)
to
Montreal (YUL)
我尝试过:
$matched = preg_replace('/[\n]/', '', $string);
var_dump($matched);
但它返回的是:
Montreal (YUL)
我尝试了各种正则表达式的组合,但它似乎只能找到我指定的内容,替换它,并在匹配的表达式后显示任何内容。
我确信这很简单,但我似乎无法弄明白。
提前致谢!
答案 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。