Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每隔一个逗号后分解为换行_Php_Regex_Explode - Fatal编程技术网

Php 每隔一个逗号后分解为换行

Php 每隔一个逗号后分解为换行,php,regex,explode,Php,Regex,Explode,当我回显$model变量时,我试图在每隔一个逗号后插入换行符,该变量包含从mysql数据库中取出的每个产品的许多不同模型的列表。我尝试使用explode,但失败了,因为它只显示了第2行(model1,model2)。列表中的其他型号丢失。到目前为止,我得到的是: <?php $commasCount = count(explode(',', $model)); if ($commasCount > 2) { $model = preg_replace('~,[^,]*

当我回显$model变量时,我试图在每隔一个逗号后插入换行符,该变量包含从mysql数据库中取出的每个产品的许多不同模型的列表。我尝试使用
explode
,但失败了,因为它只显示了第2行(model1,model2)。列表中的其他型号丢失。到目前为止,我得到的是:

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

}
echo $model;
 ?>

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

关于

我试图在每隔一个逗号后插入换行符

您可以将
preg\u replace
与以下正则表达式一起使用:

$model = preg_replace('~,[^,]*,~', "\$0\n", $model);
或者-如果在Web浏览器中呈现输出:

$model = preg_replace('~,[^,]*,~', "\$0<br/>", $model);
$model=preg\u replace(“~,[^,]*,~”,“\$0
,$model);
这是你的电话号码


基本上,匹配逗号、逗号以外的0+符号(使用
[^,]*
),然后再次使用逗号,然后将匹配的文本替换为自身(
$0
),添加换行符。

您可以使用
数组\u块
将项目两个一个地分组:

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

你检查过$commasCount里面有什么吗?也许你会看到你应该改变什么也许
$model=preg\u replace('~,[^,]*,,“\$0\n”,$model)
会做什么?当我这样做时,它们会回到常规视图,我可以看到它们所有,但它们不是一排两个接一个。我的代码现在是:请提供示例输入和预期输出。@Nancy:我想你想要的是

而不是
\n
,不是吗?@Nancy:用
“\$0\n”
替换
”\$0
。如果你在网络浏览器中呈现文本,那就行了。Wiktor和@Toto,谢谢你们,伙计们,现在可以了!