извлечь теги (слова) из всей строки

Какой оптимальный способ извлечь каждое слово из строки, такой как:

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

где те, которые окружены двойными кавычками, должны рассматриваться как один элемент:

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

Ответы на вопрос(3)

Вы должны использовать синтаксический анализатор CSV, а не использовать свой собственный. PHP имеет встроенную функцию, которая делает именно то, что вы хотите & # x2014;str_getcsv:

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

Обратите внимание, что для этого требуется PHP 5.3. & Quot; Пользователь добавил заметки & quot; показать много обходных путей для этого.

ты можешь использовать:

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

(код не проверен)

 06 июл. 2012 г., 11:00
@ Рон, чтоforeach($array as $key => $value) это плохой стиль ...
 06 июл. 2012 г., 10:55
@ Рон: Действительно? Зачем? Как вы должны повторять и изменять сейчас?
 06 июл. 2012 г., 10:51
Это не будет обрабатывать некоторые входные права, такие как: ... два, "большой, три", четыре, ...
 06 июл. 2012 г., 10:54
Почему тег & amp; $? Это не рекомендуется, так как php5
 06 июл. 2012 г., 10:59
Это считается плохим стилем программирования. Из-за того, что эта грамматика приводит к путанице. Альтернатива: foreach ($ array as $ key = & gt; $ value) {$ array [$ key] = $ value; }
Решение Вопроса

Если вы используете php & gt; = 5.3, тогда у вас есть функция str_getcsv.

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

Ваш ответ на вопрос