У меня есть строка, которая имеет следующий формат:
"{\"A5\";\"A6\";\"A7\";\"varying number of params...\"}"
Как я могу использовать PHP для преобразования строки в A5, A6, A7, varying number of params...
Я знаю, что str_replace
- это способ, но мне было интересно, если что-то лучше сделать с регулярным выражением?
(?<=\\")[^\\;]+
Попробуйте это. Смотрите демоверсию.
https://regex101.com/r/sH8aR8/53
$re = "/(?<=\\\\\")[^\\\\;]+/";
$str = "\"{\"A5\";\"A6\";\"A7\";\"varying number of params...\"}\"";
preg_match_all($re, $str, $matches);
Детали:
NODE EXPLANATION
--------------------------------------------------------------------------------
(?<= look behind to see if there is:
--------------------------------------------------------------------------------
\\ '\'
--------------------------------------------------------------------------------
" '"'
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
[^\\;]+ any character except: '\\', ';' (1 or more
times (matching the most amount possible))
Также вы можете использовать str_replace с массивами, если вам не нужна сила регулярного выражения:
echo str_replace(array('"{\"', '\";\"', '\"}"'), array("", ", ", ""), $str);
→ A5, A6, A7, varying number of params...
test at eval.in
str_replace
иexplode
.;
появляются внутри кавычек? Формат, который у вас есть, предполагает, что это возможно.