如何删除最后一个字符(从数组创建字符串时的逗号)? [复制]
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);
【讨论】:
以上是关于如何删除最后一个字符(从数组创建字符串时的逗号)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何删除最后出现的逗号,逗号本身可能不是SQL中String的最后一个字符