如何删除最后一个字符(从数组创建字符串时的逗号)? [复制]

Posted

技术标签:

【中文标题】如何删除最后一个字符(从数组创建字符串时的逗号)? [复制]【英文标题】:How to remove last character (comma when creating a string from an array)? [duplicate] 【发布时间】:2015-11-01 03:25:29 【问题描述】:

我正在尝试删除此代码输出中的最后一个字符:

$images = "image1,image2,image3";
$images = explode(',', $images);

foreach ($images as $image) 
    echo "'$image',";

当前输出:

'image1','image2','image3',
                        //^ See here

预期输出:

'image1','image2','image3'
                        //^ See here

【问题讨论】:

抱歉我更新了@Script47 看起来像是在构建 JSON 或 CSV 列表的一种脆弱尝试。 【参考方案1】:

rtrim($string, ",") 将删除尾随逗号。 rtrim

trim($string, ",") 将删除尾随和前导逗号。 trim

查看您的代码,在您的情况下使用 implode 会很有用

implode(",", $images)

Implode 没有在末尾放逗号,只在变量之间放逗号

【讨论】:

怎么样?我不明白。请添加示例.. 谢谢 删除 foreach 循环。只需添加以下内容: echo(implode(",", $images));【参考方案2】:

选项 1

在循环数据时,将其添加到字符串中,然后使用php's rtrim function 删除结尾的逗号。

$images = "image1,image2,image3";
$images = explode(',', $images);

foreach ($images as $image) 
    $string .= "'$image',";


echo rtrim($string, ',');

选项 2

如果你真的想进入它,你可以使用正则表达式和PHP preg_replace:

$images       = "image1,image2,image3";
$patterns     = ['/(^)/', '/($)/', '/,/'];
$replacements = ["'", "'", "','"];

echo preg_replace($patterns, $replacements, $images);

这将消除循环、内爆、爆炸等的需要。

【讨论】:

【参考方案3】:

保持简单并使用implode(),例如

<?php

    $images = "image1,image2,image3";
    $arr = explode(",", $images);
    echo "'" . implode("','", $arr) . "'";

?>

输出:

'image1','image2','image3'

【讨论】:

我个人认为rtrim 会更简单,但各有各的。 非常感谢.. @Script47 编辑我的问题并感谢@Rizier123【参考方案4】:

这将从 $string 中删除尾随逗号。

rtrim($string, ",") would remove trailing commas.

我不知道如何将其标记为重复,但这里还有一个也被标记为重复的 (Remove the last character from string)。 答案来自我上面的链接

【讨论】:

问题标签下方的标志链接,然后按照说明进行操作。我做了这个。【参考方案5】:

删除字符串的最后一个字符,您可以使用substr() 将其截断:

$text = "image,";
echo substr($text, 0, strlen($text) - 1); // "image"

它读取从第零个字符到最后一个字符减一的所有内容(即省略最后一个字符)。

如果您知道最后一个字符是什么,例如 image,(逗号),那么您可以直接修剪它:

$text = "image,";
echo rtrim($text, ','); // "image"

这将删除字符串末尾的所有 , 字符。

【讨论】:

【参考方案6】:

您好,您可以使用 Implode。

$images = "image1,image2,image3";
$images = explode(',', $images);
echo "'".implode("','",$images)."'";

输出将是:

'image1','image2','image3'

【讨论】:

【参考方案7】:

看起来我们还没有足够的答案。所以这是另一种简单的方法。

如果已经有一个逗号分隔的列表,并且只需要引用,那么一个愚蠢的正则表达式就足够了:

$images = "image1,image2,image3";
echo preg_replace("~[^,]+~",    "'$0'",   $images);
#                     ↑           ↑
#           anything but commas   ↑
#                            wrap in quotes

这避免了手动循环事物或对结果进行后处理的需要。

【讨论】:

我在你的回答中遗漏了一些 unicode 箭头:] 哦。你说得对。这是非常疏忽的。 :↑【参考方案8】:

让我提出另一个解决方案。在我看来,它会更清楚一点:

$images = "image1,image2,image3";

$quotified = array_map(
                function($x) 
                    // Add quotes... You can also add trim() here 
                    // ...or do some another 'purifying' things
                    // ...that will be applied to each image list element
                    return "'$x'"; 
                , 
                explode(',', $images)
            );

$images = implode(",", $quotified);

【讨论】:

以上是关于如何删除最后一个字符(从数组创建字符串时的逗号)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery从数组中删除最后一个逗号

拼接字符串时,去掉最后一个多余的逗号

如何删除最后出现的逗号,逗号本身可能不是SQL中String的最后一个字符

使用javascript删除字符串中最后出现的逗号

使用 String.Join 将数组转换为字符串后从字符串中删除多余的逗号(C#)

如何从数组元素中删除字符?