如何摆脱空白?

问题描述:

$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

如果你想允许空格前后各单词后,可以考虑使用trimpreg_split

$exp = preg_split('/\s*,\s*/', trim($data)); 

trim将删除任何先前和结尾的空白,并为preg_split该模式允许周围逗号太多的空白。

+0

+1 ideone链接:http://ideone.com/c9J04 – 2011-01-29 15:56:00

+0

哇真是异想天开太短 – 2011-01-29 16:03:45

尝试此代码时出现错误。您可以使用以下方法来从一个逗号分隔的字符串中删除谷歌&兵(即在阵列中):

$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;