使用php

时间:2018-02-06 08:13:04

标签: php html string

我有一串显示如下......

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中工作

3 个答案:

答案 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,

https://3v4l.org/LQSA9

答案 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, 

是。这是更多的代码然后做正则表达式。但是如果你的字符串非常长,它的性能会更好。

它的作用:

  1. 用逗号分隔字符串
  2. 遍历所有元素并将其添加到新字符串
  3. 如果$ i除以2并且没有休息(每个偶数),请添加新行