あなたのJSONにはJSON_ERROR_SYNTAX
エラーがあります
オプション A最初に 使用する必要stripslashes
がありますが、バックスラッシュが失われます\
$config = '{"regex": "/font-size:\s*(?:.*);/i"}';
$config = json_decode(stripslashes($config),true);
var_dump($config);
出力
array
'regex' => string '/font-size:s*(?:.*);/i' (length=22)
オプション B独自の関数を作成する
$config = '{"regex": "/font-size:\s*(?:.*);/i"}';
var_dump(splitJSONObject($config));
出力
array
'regex' => string '/font-size:\s*(?:.*);/i' (length=23)
使用する関数 (配列への分割のみ)
function splitJSONObject($json) {
$json = str_replace(array("\\\\","\\\""), array("\","""), $json);
$parts = preg_split("@(\"[^\"]*\")|([\[\]\{\},:])|\s@is", $json, - 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
foreach ( $parts as $index => $part ) {
if (strlen($part) == 1) {
switch ($part) {
case "[" :
case "{" :
$parts[$index] = "array(";
break;
case "]" :
case "}" :
$parts[$index] = ")";
break;
case ":" :
$parts[$index] = "=>";
break;
case "," :
break;
default :
return null;
}
} else {
if ((substr($part, 0, 1) != "\"") || (substr($part, - 1, 1) != "\"")) {
return null;
}
}
}
$json = str_replace(array("\",""","$"), array("\\\\","\\\"","\\$"), implode("", $parts));
return eval("return $json;");
}