NeD
Новичок
Задача разбить строки в массив. Разделитель - запятая. Запятые находящиеся в кавычках игнорируем. Код ниже почти рабочий
Проблема со строкой вида 'type="checkbox", checked'. Теряется "cheked"
Если делать опциональным [:=], то неправильно бьётся "name='viewport',content='width=device-width,initial-scale=1.0'"
Мозг кипит уже.
PHP:
$str = "name='viewport',content='width=device-width,initial-scale=1.0'";
preg_match_all('/[^, ?].*?[=:]\s*(?:([\'"]).*?\1|.*?)(?=,|\s*$)/',$str,$m);
var_dump($m[0]);
array (size=2)
0 => string 'name='viewport'' (length=15)
1 => string 'content='width=device-width,initial-scale=1.0'' (length=46)
preg_match_all('/[^, ?].*?[=:]\s*(?:([\'"]).*?\1|.*?)(?=,|\s*$)/','type="checkbox", checked',$m);
var_dump($m[0]);
array (size=1)
0 => string 'type="checkbox"' (length=15)
preg_match_all('/[^, ?].*?[=:]\s*(?:([\'"]).*?\1|.*?)(?=,|\s*$)/','type="checkbox", checked: true',$m);
var_dump($m[0]);
array (size=2)
0 => string 'type="checkbox"' (length=15)
1 => string 'checked: true' (length=13)
Если делать опциональным [:=], то неправильно бьётся "name='viewport',content='width=device-width,initial-scale=1.0'"
PHP:
array (size=3)
0 => string 'name='viewport'' (length=15)
1 => string 'content='width=device-width' (length=27)
2 => string 'initial-scale=1.0'' (length=18)