Как преобразовать строку массива в массив в php - PullRequest
0 голосов
/ 23 июля 2010

У меня есть строка, полученная из js с использованием encodeURICompoent (). Теперь я хотел бы преобразовать эту строку в массив. Я старался изо всех сил, чтобы решить эту проблему. Но я не мог найти никакого решения, чтобы сделать это. Любая помощь с благодарностью.

array string = 'array(0=>array("packid"=>22,"pverid"=>18,"yaml"=>"- url: /static
 static_dir: static

- url: .*
  script: provider.py" ),1=>array("packid"=>23,"pverid"=>19,"yaml"=>"- url: /static
  static_dir: static

- url: .*
  script: provider.py" ));';

Благодарю вас, sureace

Ответы [ 6 ]

1 голос
/ 23 июля 2010

Как упомянуто deceze, вы можете использовать eval(), чтобы превратить эту строку в массив PHP, но стоит ли это делать или нет, это другое дело ...

$myCodeString = 'array(0=>ar ...... etc.';  // Your coded string

eval('$myArray = '.$myCodeString);
var_dump($myArray);

Который, по крайней мере, возвращает действительныйМассив PHP:

array(2) {
  [0]=>
  array(3) {
    ["packid"]=>
    int(22)
    ["pverid"]=>
    int(18)
    ["yaml"]=>
    string(71) "- url: /static
 static_dir: static

- url: .*
  script: provider.py"
  }
  [1]=>
  array(3) {
    ["packid"]=>
    int(23)
    ["pverid"]=>
    int(19)
    ["yaml"]=>
    string(72) "- url: /static
  static_dir: static

- url: .*
  script: provider.py"
  }
}

Возможно, вы захотите еще раз проанализировать ваши поля "yaml" ...?

1 голос
/ 23 июля 2010

Похоже, eval должен сделать работу по превращению этой строки в массив.
НО: Никогда не следует использовать eval, особенно с данными, полученными из внешних источников, поскольку это открывает массу проблем безопасности. Вместо этого вы должны разобрать строку вручную, но это будет довольно неприятно.

Вы должны найти лучший способ отправки значений массива, например, через JSON . Особенно при отправке значений из Javascript, это обычный метод.

0 голосов
/ 23 июля 2010

да, я пытался, но это не решило мою проблему.

Я хочу получить объекты json со стороны клиента в php, который содержит строку закодированных данных с использованием javascript encodeURIComponent ().Если он содержит эти данные, я не могу преобразовать этот объект в массив с помощью функции json_decode ().

json string = packs = "{\" packid \ ": \" 22 \ ", \" pverid \": \" 18 \ "\ "YAML \": \" -% 20url% 3A% 20% 2Fstatic% 0A% 20% 20static_dir% 3A% 20static% 0A% 0a-% 20url% 3A% 20. % 0A% 20% 20script% 3A% 20provider.py \ "}, {\" packid \ ": \" 23 \ "\ "pverid \": \ "19 \", \ "YAML \": \" -% 20url% 3A% 20% 2Fstatic% 0A% 20% 20static_dir% 3A% 20static% 0A% 0a-% 20url% 3A% 20. % 0A% 20% 20script% 3A% 20provider.py \ "}"

Спасибо, конечно

0 голосов
/ 23 июля 2010

Очень трудно понять, что вы спрашиваете здесь.

Хотите ли вы преобразовать строку yaml в массив php?Если это так, попробуйте spyc .

0 голосов
/ 23 июля 2010

было бы проще использовать serialize или json для передачи массива. (но в этом случае вам понадобится небольшая функция на стороне клиента для сериализации / json_encode)

РЕДАКТИРОВАТЬ: если encodeURIComponent ваша проблема, просто введите urldecode перед json_decode ...

0 голосов
/ 23 июля 2010

Посмотрите на функцию implode .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...