Jack hardcastle
Jack hardcastle

Reputation: 2875

PHP string presented as array to array

$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.

Upvotes: 1

Views: 59

Answers (4)

EJTH
EJTH

Reputation: 2219

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

Upvotes: 1

Uday Pawar
Uday Pawar

Reputation: 1

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);

Upvotes: 0

Akshay Hegde
Akshay Hegde

Reputation: 16997

 [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
 )

Upvotes: 1

Sougata Bose
Sougata Bose

Reputation: 31749

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);

Upvotes: 3

Related Questions