PHP foreach 添加逗号的字符串

PHP string to foreach with comma added

你好,我有以下字符串

   $phones = "Samsung Galaxy S8~LG G6~iPhone 7 Plus~ Motorola Z2";

我用explode分隔字符串

$myArray = explode('~', $phones);

并在 foreach 循环中使用它

foreach($myArray as $value) {

         echo '<li>'.$value.'</li>';  

}

结果是:

但我想要做的是为除最后一个元素之外的每个元素添加逗号,并为数字添加括号。

我试过 implode 但无法使用 foreach 循环

谢谢

首先使用end函数找到最后一个数组元素。在循环中,如果元素是最后一个,则只显示逗号。

$phones = "Samsung Galaxy S8~LG G6~iPhone 7 Plus~ Motorola Z2";
 $myArray = explode('~', $phones);

 $lastElement = end($myArray);
foreach($myArray as $value) {
    $value = preg_replace('/\d+/', '([=10=])', $value);
    if($value == $lastElement) {
         echo '<li>'.$value.'</li>';  
    }else{
      echo '<li>'.$value.',</li>';  
    }

}

您可能需要正则表达式在数字周围添加 ()

$myArray = explode('~', $phones);

foreach($myArray as &$value) {
    $value = preg_replace('/\d+/', '([=10=])', $value);
}
echo '<li>' . implode(',</li><li>', $myArray) . '</li>';
  • 将任何数字序列 \d+ 替换为 ( 匹配的数字 )
  • 使用逗号和列表项标签进行内爆

如果您对完整字符串执行 preg_replace,您只需调用一个正则表达式。
然后我使用 str_replace 添加 li 标签,而不是爆炸和内爆。

$phones = "Samsung Galaxy S8~LG G6~iPhone 7 Plus~ Motorola Z2";

$value = preg_replace('/(\d+.*?)(~)/', '()', $phones . "~");

$value = "<li>". str_replace("~", ",</li><li>", substr($value,0,-1)) . "</li>";

Echo $value;

https://3v4l.org/sCkjg

编辑我看到了 iPhone 7 加东西的愿望。
我想我做到了。
我所做的是在要捕获的正则表达式的字符串末尾添加一个 ~
我正则表达式(数字 ->)(~)。这意味着我可以在正则表达式替换中使用 $1 和 $2。
然后为了确保我不在最后的字符串中保留 ~ 我需要在 str_replace.

中删除它