2011-01-29 8 views
1
$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Как избавиться от пробелов?

Как я могу избавиться от первых два пустых запятые?

ответ

6

Лучше получить разницу ваших расщепленных массивов $exp минус $filtr:

$clean = implode(',', array_diff($exp, $filtr)); 

Это также избежать вероятность того, что вы только удалить подстроку другого слова, как при удалении car из bike,car,carpet должно привести к bike,carpet и не в bike,pet.

И если вы хотите, чтобы пробелы до и после каждого слова, рассмотреть вопрос об использовании trim и preg_split:

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

trim удалит все предшествующее и завершающие пробельные и образец для preg_split позволяет пробельные окружающих запятая тоже.

+0

+1 ideone ссылка: http://ideone.com/c9J04 –

+0

вау какая идея слишком коротка –

0

Я получаю сообщение об ошибке при попытке выполнить этот код. Вы можете использовать следующие удалить Google & Бинг (которые находятся в массиве) из разделенных запятыми строки:

$data = "google,bing,searchengine,seo,search";
$exp = explode(",",$data);
$filtr = array("google","bing");
$diff = array_diff($exp, $filtr);
$clean = implode(",",$diff);
echo $clean;

+0

да это работает благодаря –

0

Ваш кусок кода также может выглядеть следующим образом:

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

Its полезно, когда в $ data есть несколько элементов. Для больших массивов потребуется оптимизация.

0

Вы бы лучше, если проверки значения в цикле следующим образом:

$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; 
Смежные вопросы