我正在尝试在每个其他逗号之后插入break行,当我回显我的$ model varible时,它包含从mysql数据库中提取的每个产品的许多不同模型的列表。我试图用explode
来做,但是失败了,因为它只显示了第一行2(model1,model2)。列表中的其他模型缺失。到目前为止我所拥有的是:
<?php
$commasCount = count(explode(',', $model));
if ($commasCount > 2) {
$model = preg_replace('~,[^,]*,~', "\$0\n", $model);
}
echo $model;
?>
我的问题是 - 如何连续两个显示模型的完整列表,而不仅仅是前两个记录?谢谢。
答案 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);