Как получить массив в строку в php?

Если у меня есть такая строка,

$my_string="array('red','blue')";

Как я могу преобразовать это в реальный массив?

Пример. :

$my_array=array('red','blue');

0

Решение

НЕ ИСПОЛЬЗОВАТЬ EVAL, Это ужасное излишество и, вероятно, крайне небезопасное.

Пока это не ЛУЧШИЙ способ сделать это (как упоминалось в комментариях к вопросу), вы можете использовать эту функцию ниже, чтобы сделать именно то, что вам нужно.

Как это устроено:

Он использует Regex, чтобы найти и разбить строку на основе этих макетов, массив разделяется с помощью preg_split который является регулярным выражением более популярного explode,

После разделения массив будет иметь несколько пустых значений, поэтому просто используйте array_filter удалить эти пустые значения.

так:

    // Explode string based on regex detection of:
//
// (^\h*[a-z]*\h*\(\h*')
// 1) a-z text with spaces around it and then an opening bracket
// ^ denotes the start of the string
// | denotes a regex OR operator.
// \h denotes whitespace, * denotes zero or more times.
//
// ('\h*,\h*')
// 2) or on '),(' with possible spaces around it
//
// ('\h*\)\h*$)
// 3) or on the final trailing '), again with possible spaces.
// $ denotes the end of the string
// the /i denotes case insensitive.

function makeArray($string){

$stringParts = preg_split("/(^\h*[a-z]*\h*\(\h*')|('\h*,\h*')|('\h*\)\h*$)/i",$string);
// now remove empty array values.
$stringParts = array_filter($stringParts);
return $stringParts;
}

Использование:

//input
$myString = " array('red','blue')";
//action
$array = makeArray($myString);
//output
print_r($array);

Выход:

Array (

[1] => красный

[2] => синий

)

Пример 2:

$myString = " array('red','blue','horses', 'crabs (apples)', '(trapdoor)', '<strong>works</strong>', '436')";
$array = makeArray($myString);
print_r($array);

Выход:

Array (
[1] => красный
[2] => синий

[3] => лошади
[4] => крабы (яблоки)
[5] => (люк)
[6] => <strong>works</strong>

[7] => 436
)

Очевидно, регулярное выражение может нужна небольшая настройка в зависимости от ваших конкретных обстоятельств, но это очень хорошая отправная точка …

Справочный вопрос / Ответы

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector