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>';
}
结果是:
- 三星 Galaxy S8
- LG G6
- iPhone 7 加
- 摩托罗拉 Z2
但我想要做的是为除最后一个元素之外的每个元素添加逗号,并为数字添加括号。
- 三星 Galaxy S(8),
- LG G(6),
- iPhone (7) 加上,
- 摩托罗拉 Z(2)
我试过 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;
编辑我看到了 iPhone 7 加东西的愿望。
我想我做到了。
我所做的是在要捕获的正则表达式的字符串末尾添加一个 ~
。
我正则表达式(数字 ->)(~)。这意味着我可以在正则表达式替换中使用 $1 和 $2。
然后为了确保我不在最后的字符串中保留 ~
我需要在 str_replace.
中删除它
你好,我有以下字符串
$phones = "Samsung Galaxy S8~LG G6~iPhone 7 Plus~ Motorola Z2";
我用explode分隔字符串
$myArray = explode('~', $phones);
并在 foreach 循环中使用它
foreach($myArray as $value) {
echo '<li>'.$value.'</li>';
}
结果是:
- 三星 Galaxy S8
- LG G6
- iPhone 7 加
- 摩托罗拉 Z2
但我想要做的是为除最后一个元素之外的每个元素添加逗号,并为数字添加括号。
- 三星 Galaxy S(8),
- LG G(6),
- iPhone (7) 加上,
- 摩托罗拉 Z(2)
我试过 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;
编辑我看到了 iPhone 7 加东西的愿望。
我想我做到了。
我所做的是在要捕获的正则表达式的字符串末尾添加一个 ~
。
我正则表达式(数字 ->)(~)。这意味着我可以在正则表达式替换中使用 $1 和 $2。
然后为了确保我不在最后的字符串中保留 ~
我需要在 str_replace.