$data = "google,facebook,youtube,twitter,bing";
$exp = explode(",",$data);
$rep = str_replace("facebook",$exp);
$final = implode(",",$rep);
echo $final
output// google,,youtube,twitter,bing
如何用逗号删除此空格?
答案 0 :(得分:4)
以下是您的代码应该是什么样的:
$data = "google,facebook,youtube,twitter,bing";
$exp = explode(",",$data);
foreach($exp as $key => $item)
{
if(trim($item) == "facebook")
{
unset($exp[$key]); //Remove from teh array.
}
}
$final = implode(",",$rep);
echo $final;
或只要你在后来没有空格就可以去
$data = str_replace(",facebook,",",",$data);
击> <击> 撞击>
对于使用str_replace
的许多并发症,只需使用loopy方法。
答案 1 :(得分:3)
$data = "google,facebook,youtube,twitter,bing";
$exp = explode(',', $data);
$index = array_search('facebook', $exp);
if ($index !== false){
unset($exp[$index]);
}
$final = implode(',', $exp);
答案 2 :(得分:2)
您可以使用array_filter($data)
删除数组中的空元素:
$data = str_replace("facebook", "", "google,facebook,youtube,twitter,bing");
$exp = array_filter(explode(",",$data));
$final = implode(",",$rep);
echo $final;
http://php.net/manual/en/function.array-filter.php
“如果没有提供回调,则输入的所有条目等于FALSE(参见转换为布尔值)将被删除。”
这就是你要找的东西吗?
答案 3 :(得分:1)
有很多方法可以做到这一点但也许最简单的只是:
$data = str_replace(',,', ',', $data);
答案 4 :(得分:0)
$data = "google,facebook,youtube,twitter,bing";
$final = preg_replace("/(^facebook,?|,facebook,|,facebook$)/", "", $data);
可替换地:
$final = implode(',', preg_grep("/^facebook$/", explode(',', $data), PREG_GREP_INVERT));
请参阅preg_grep()
答案 5 :(得分:0)
Orbling与他的preg_replace
方法非常接近,它需要太多逗号,也没有说明针是唯一值的可能性。
str_replace
和preg_replace
都有明显的优势,即不会费心explode
和implode
。这需要是此页面上答案的主要分隔符。将字符串转换为数组并返回字符串(更不用说额外处理)的方法效率低于_replace
方法。
我还会注意到,在他们的array_diff
/ explode
方法中没有人提到implode
所以我会将其包含在我的方法列表中,即使它依赖于在explode
和implode
上。这纯粹是出于演示的目的。
如果针是另一个值的子字符串,则所有str_replace
方法都可能不值得信任。由于OP的样本输入在这方面没有提出冲突,我已经建立了str_replace
方法。
preg_replace
方法很瘦而且坚固。echo preg_replace("/,facebook\b|\bfacebook,|\bfacebook\b/","",$data);
通过使用单词边界(\b
),我的正则表达式模式可以防止针存在于另一个值中。 See通过使用前导逗号检查针,然后使用尾随逗号检查,然后没有逗号;如果字符串中唯一的值是针,则模式仍然保持。最后,如果csv字符串中没有针,则没有错误。这是SO读者应该实现的答案。
如果要动态生成针,可以通过两种方式声明模式:
$needle="facebook";
echo preg_replace("/,$needle\b|\b$needle,|\b$needle\b/","",$data);
// OR
echo preg_replace("/,".$needle."\b|\b".$needle.",|\b".$needle."\b/","",$data);
(Demo)
我的第二名产品使用str_replace
:
$args=[["facebook",",,"],["",","]];
echo trim(str_replace($args[0],$args[1],$data),",");
它替换facebook
然后用一个逗号替换任何双逗号,然后从结果字符串中删除任何前导或尾随逗号。
排在第三位,explode
- &gt; array_diff
- &gt; implode
作为单行:
echo implode(',',array_diff(explode(',',$data),["facebook"]));
这是一个紧张的单行,但仍然需要麻烦爆炸,过滤和内爆。
以下是my testing ground我将所有三种方法都放在了步骤中。