1
$var = "['test', 'test2', 'test3']";

how do I create a workable array from this in PHP?

I've tried explode($var, ","); but this didn't seem to work, unless something went wrong with that attempt.

Jack hardcastle
  • 2,748
  • 4
  • 22
  • 40

4 Answers4

3

explode($var, ","); is wrong. explode needs the first argument to be the delimiter and the second be the string. Replace [] and then explode -

$var = "['test', 'test2', 'test3']";

$var = str_replace(array('[', ']'), '', $var);
$arr = explode(',', $var);
Sougata Bose
  • 31,517
  • 8
  • 49
  • 87
1
 [akshay@localhost tmp]$ cat test.php
 <?php 
 $var = "['test', 'test2', 'test3']";
 print_r(  json_decode(str_replace("'","\"",$var)) );
 ?>

Output

 [akshay@localhost tmp]$ php test.php
 Array
 (
     [0] => test
     [1] => test2
     [2] => test3
 )
Akshay Hegde
  • 16,536
  • 2
  • 22
  • 36
1

I would say that it looks like a job for json_decode, but its not valid json... There is a way to make it valid however:

How to json_decode invalid JSON with apostrophe instead of quotation mark

Community
  • 1
  • 1
EJTH
  • 2,178
  • 1
  • 20
  • 25
0

There is an eval() function in PHP which converts string into PHP statements. The string has to be valid PHP statement.

In your case "['test', 'test2', 'test3']"; is not valid statement. You can use something similar to below syntax. Please note that the $x is in single quotes as $x in double quotes will return the value.

$var = "['test', 'test2', 'test3'];"; eval('$x = ' . $var); print_r($x);

  • Then just pray that this isn't input from a user or 3rd party. I wouldn't use eval for this. – EJTH Jun 01 '15 at 09:28
  • Yea that's true; it could be vulnerable to attacks if the string is user input and not sanitized properly. – Uday Pawar Jun 01 '15 at 09:34