preg_replace在本地计算机上不起作用,在其他地方都可以使用

时间:2015-03-10 15:06:09

标签: php regex preg-replace

我有以下代码

$cities = preg_replace(
    '/^\\d*\\n(.*)\\n([^\\d].*|)/m',
    '\\item \\textbf{$1} -- $2',
    $_POST['cities']
);

$_POST['cities'] has this value

$cities与我本地计算机上的$_POST['cities']相同,并且没有替换完成。

我通过Xampp运行PHP 5.5.9。

我通过以下服务测试了代码和正则表达式,所有这些都告诉我它应该有效:

PHP Live Regex

Regex101

Functions online (no direct link)

$count为0,显然它不匹配,但是上面的来源应该足以证明它应该。

编辑:代码不会处理更小,更小的字符串(由两个匹配组成)。

1 个答案:

答案 0 :(得分:0)

似乎问题是我的测试服务器运行的是Windows,而我在Linux上习惯了Regex。 Windows会按\r\n而不仅仅\n匹配换行符,因此我将所有\n更改为\r?\n以获得可移植性,从而解决了问题。

编辑:我现在正在使用\ {,如@je-suis-charlie所建议。

我会在两天内接受这个答案。