在每隔一个逗号之后爆炸就行了

时间:2017-03-27 09:32:55

标签: php regex explode

我正在尝试在每个其他逗号之后插入break行,当我回显我的$ model varible时,它包含从mysql数据库中提取的每个产品的许多不同模型的列表。我试图用explode来做,但是失败了,因为它只显示了第一行2(model1,model2)。列表中的其他模型缺失。到目前为止我所拥有的是:

   <?php 
$commasCount = count(explode(',', $model));
if ($commasCount > 2) {
    $model = preg_replace('~,[^,]*,~', "\$0\n", $model);

}
echo $model;
 ?>

我的问题是 - 如何连续两个显示模型的完整列表,而不仅仅是前两个记录?谢谢。

2 个答案:

答案 0 :(得分:2)

关于

  

我试图在每个其他逗号之后插入break行

您可以将preg_replace与以下正则表达式一起使用:

$model = preg_replace('~,[^,]*,~', "\$0\n", $model);

或 - 如果您在Web浏览器中呈现输出:

$model = preg_replace('~,[^,]*,~', "\$0<br/>", $model);

这是regex demo

基本上,匹配逗号,除逗号以外的0 +符号(带[^,]*),再加上逗号,然后用自己($0)替换匹配的文本,添加换行符。

答案 1 :(得分:0)

您可以使用array_chunk逐项对项目进行分组:

$models = array_chunk(explode(',', $model), 2);
$pairs = array_map(function ($i) {
    return implode(',', $i);
}, $models);
$result = implode(",\n", $pairs);