如何摆脱空白?
问题描述:
$data = "google,bing,searchengine,seo,search";
$exp = explode(",",$data);
$filtr = array("google","bing");
$fdat = str_replace($filtr,"",$data);
$clean = implode(",",$fdat);
echo $clean;
这给了放,,searchengine,seo,search
如何摆脱空白?
如何才能摆脱前两个空白的逗号?
答
更好地得到您的分裂阵列$exp
减去$filtr
的区别:
$clean = implode(',', array_diff($exp, $filtr));
这也将避免你将只删除一个字的子从bike,car,carpet
删除car
时一样的机会应导致bike,carpet
和不在bike,pet
。
如果你想允许空格前后各单词后,可以考虑使用trim
和preg_split
:
$exp = preg_split('/\s*,\s*/', trim($data));
trim
将删除任何先前和结尾的空白,并为preg_split
该模式允许周围逗号太多的空白。
答
尝试此代码时出现错误。您可以使用以下方法来从一个逗号分隔的字符串中删除谷歌&兵(即在阵列中):
$data = "google,bing,searchengine,seo,search";
$exp = explode(",",$data);
$filtr = array("google","bing");
$diff = array_diff($exp, $filtr);
$clean = implode(",",$diff);
echo $clean;
答
你的代码也可能是这样的:
$data = "google,bing,searchengine,seo,search";
$exp = explode(",",$data);
$filtr = array("google","bing");
foreach ($exp as $key => $item) {
if (in_array($key, $filtr)) unset($exp[$key]);
}
$clean = implode(",",$exp);
echo $clean;
其当$ data中的项目很少时很有用。对于大数组,它需要优化。
答
如果一个循环内检查的价值,像这样你会更好:
$data = "google,bing,searchengine,seo,search";
$exp = explode(",",$data);
$filtr = array("google","bing");
foreach($exp as $k => $v)
{
if(in_array($v,$filtr))
{
unset($ext[$k]);
}
}
$clean = implode(",",$ext);
echo $clean;
+1 ideone链接:http://ideone.com/c9J04 – 2011-01-29 15:56:00
哇真是异想天开太短 – 2011-01-29 16:03:45