我有一串显示如下......
L1010,L0072,L005,L0098,L0198,L0198
我需要在每隔一个逗号后添加新行
即
L1010,L0072,
L005,L0098,
L0198,L0198
字符串长度将始终不同,但将遵循与上述相同的模式,即数字逗号空格数字逗号空格等。
我怎么能用PHP做到这一点?有可能吗?
目前我在每个逗号后创建一个新行 Add a space after a specific character with php
$input = L1010,L0072,L005,L0098,L0198,L0198;
$pattern = '/,/';
$replacement = '$0<br>' ;
$output = preg_replace($pattern,$replacement,$input);
我怎么能用PHP做到这一点?有可能吗?
由于
PS,我也发现了这个Help with regexp replacing every second comma in the string,但我不确定如何修改它以在PHP中工作
答案 0 :(得分:1)
您可能需要像此https://regex101.com/r/5YkhQs/1
这样的新正则表达式$pattern = '/[0-9]{3},\s[0-9]{3},\s/';
如果号码可以包含任意数量的字符,请使用:
$pattern = '/[0-9]+,\s[0-9]+,\s/';
UP。除了组内的逗号和空格之外的任何字符))
$pattern = '/[^,\s]+,\s[^,\s]+,\s/';
答案 1 :(得分:0)
你可以使用explode然后使用array_chunk将它们循环两次和两次 然后将其内核恢复到您想要的格式。
$s = "123, 123, 456, 456, 123, 123";
$arr = explode(",", $s);
$str ="";
Foreach(array_chunk($arr,2) as $sub){
$str .= trim(implode(",",$sub)) .",<br>\n";
}
Echo $str;
输出:
123, 123,
456, 456,
123, 123,
答案 2 :(得分:0)
如何在爆炸后循环元素?
$string = '123, 234, 345, 546, 123, 234';
$elements = explode(',', str_replace(' ', '', $string));
$newString = '';
for ($i = 0; $i < count($elements); $i++) {
$newString .= $elements[$i] . ', ';
if ($i % 2 !== 0) {
$newString .= PHP_EOL;
}
}
print $newString;
结果:
123, 234,
345, 546,
123, 234,
是。这是更多的代码然后做正则表达式。但是如果你的字符串非常长,它的性能会更好。
它的作用: