2011-01-29 3 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; 

cela donne eteint ,,searchengine,seo,searchComment se débarrasser des espaces vides?

Comment puis-je me débarrasser des deux premiers virgules vide?

Répondre

6

Mieux obtenir la différence de vos tableaux dédoublées $exp moins $filtr:

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

Cela permettra également d'éviter le risque que vous ne supprimer une sous-chaîne d'un autre mot comme lors du retrait car de bike,car,carpet devrait aboutir à bike,carpet et pas dans bike,pet.

Et si vous souhaitez autoriser des espaces avant et après chaque mot, pensez à utiliser trim et preg_split:

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

trim supprimera les espaces blancs précédent et de fuite et le modèle pour preg_split permet les espaces autour trop la virgule.

+0

+1 lien ideone: http://ideone.com/c9J04 –

+0

wow quelle idée trop court –

0

Je reçois une erreur en essayant ce code que vous avez fait. Vous pouvez utiliser ce qui suit pour supprimer bing google & (qui sont dans un tableau) à partir d'une virgule chaîne séparée:

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

+0

oui ceci fonctionne grâce –

0

Votre morceau de code pourrait aussi ressembler à ceci:

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

Son utile quand il y a peu d'éléments dans $ data. Pour les grandes baies, il faudrait optimiser.

0

Vous seriez mieux si la vérification de la valeur dans une boucle comme ceci:

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