我想在所有5个字符数字之前断线。我怎样才能做到这一点 ? 我得到了什么:
$line[1] = preg_replace('[0-9]{5}', '\r\n\1',$line[1]);
但似乎没有工作。有谁知道我该怎么做?
这是我的字符串示例:
Zum Sonnenhügel 19 37688 Beverungen
所以我想这样做:
Zum Sonnenhügel 19
37688 Beverungen
我有谷歌doc电子表格,其中包含一列这样的地址。但我无法在那里更改它,所以我将其下载为csv,我想在php中编辑它
我得到的错误:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: preg_replace(): Unknown modifier '{' in ...\Command\EditCsvCommand.php line 54
答案 0 :(得分:3)
需要指定正则表达式分隔符,捕获组以使用反向引用。
$line[1] = preg_replace('/([0-9]{5})/', "\r\n\1", $line[1]);
除了使用双引号以使\r\n
被正确解释。
我使用了/
,但您可以选择其他字符。
<强>更新强>
正如Blackhole评论的那样,如果您使用$0
(匹配的文字),则不需要使用捕获组:
$line[1] = preg_replace('/[0-9]{5}/', "\r\n$0", $line[1]);
答案 1 :(得分:1)
您需要使用$1
代替\1
:
$line[1] = preg_replace('/([0-9]{5})/', "\r\n$1", $line[1]);
答案 2 :(得分:1)
也可以使用lookahead在所需位置插入"\r\n"
:
$line[1] = preg_replace('/(?=\b\d{5}\b)/', "\r\n", $line[1]);
添加了\b
word boundaries以更好地分隔\d
部分。