2012-07-06 6 views
0

Quelle est la meilleure façon d'extraire chaque mot d'une chaîne telle que:balises extrait (mots) de chaîne entière

one, two, "big three", four, "seven and eight" 

où ceux entourés de guillemets doubles doivent être traités comme un seul élément:

array("one", "two", "big three", "four", "seven and eight") 

Répondre

0

Si vous utilisez php> = 5.3 alors vous avez la fonction str_getcsv.

$tags = str_getcsv($tags, ',', '"', '\\'); 
$tags = array_map('trim', $tags); 
0

vous pouvez utiliser:

$tags = explode(',', $string); 
foreach($tags as &$tag) 
{ 
    $tag = trim($tag); 
} 

(code n'est pas cochée)

+2

Ce ne décrirons pas certaines entrées droite tels que: ... deux, "grand, trois", quatre, ... Pourquoi – Ron

+0

& tag $? Ceci est déconseillé depuis php5 – Ron

+0

@Ron: Vraiment? Pourquoi? Comment êtes-vous censé itérer et modifier maintenant? – Eric

3

Vous devez utiliser un analyseur CSV plutôt que de lancer le vôtre. PHP dispose d'une fonction intégrée qui fait exactement ce que vous voulez — str_getcsv:

$tags = str_getcsv($string); 
foreach($tags as $tag) { 
    ... 
} 

Notez que cela nécessite PHP 5.3. Les "Notes de contribution de l'utilisateur" montrent de nombreuses solutions de contournement pour cela.