$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'
Как преобразовать массив в массив?PHP преобразовать список массивов строк в Array
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";'
Как преобразовать массив в массив?PHP преобразовать список массивов строк в Array
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";';
preg_match_all('/"(.*)";/U', $str, $matches);
$arr = $matches[1];
var_dump($arr);
Будет ли работать с пилой выше, но сбой, если есть другие строковые литералы (или может быть HEREDOCS e.t.c.) –
Зависит от того, имеет ли OP какие-либо другие варианты –
Да, я так думаю. –
Что-то вроде этого?
<?php
$str = '$answers[0] = "Love it"; $answers[1] = "Hate it."; $answers[2] = "Doesnt care"; $answers[3] = "Like it";';
eval($str);
print_r($answers);
?>
Не используйте 'eval()', если вам это не нужно. И всегда есть другой способ добиться того, чего вы хотите. Кроме того, в строке примера OP нет знаков '' ', поэтому это не ответ. –
eval() не является хорошей практикой .. это позволяет разрешать выполнение кодов на сервере для ввода ... это может нанести вред вашему серверу ..... так что попробуйте другой метод .... –
Использование
preg_split
выбрать только значения и поместить его в массив,
пример:
$keywords = preg_split("/[\s,]+/", $str);
Просто измените р attern!
проверка документации: http://php.net/manual/en/function.preg-split.php
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";';
$chunks = explode(';', $str);
for ($aa=0;$aa<count($chunks);$aa++)
{
$chunks1 = explode('=', $chunks[$aa]);
$myArray[]=$chunks1[1];
}
есть ошибка с $ myArray [] = $ Chunks1 [1]; –
Какая ошибка вы получаете? – sskoko
$str = 'answers[0] = "Love it"; answers[1] = "Hate it."; answers[2] = "Doesnt care"; answers[3] = "Like it";';
preg_match_all('/"(.*?)"/', $str, $answers);
$answer = $answers[0];
print_r($answer);
хорошая работа, спасибо –
Если вы можете добавить новые строки после запятой (;
), посмотрите на функцию parse_ini_string()
.
$str = str_replace(';', "\n", $str); // <- add them in the source if you can
$array = parse_ini_string($str);
да, другое решение, которое работает. Спасибо друг! –
Первый вопрос: как вы получили такую строку? –
Похож на проблему [XY] (http://meta.stackexchange.com/a/66378). Где вы получаете эту строку? – Reeno
Нелегко преобразовать его в массив ... как мы можем разделить этот тип строк ... ?? попробуйте передать этот ввод только с определенными значениями. –