Das für die Helfer hier bei Problemen mit Arrays mal benutzbare Testdaten gepostet werden wird wohl ein ewiger Traum bleiben. Stattdessen werden ellenlange var_dump Ausgaben gepostet.
Habe da eine Funktion gefunden (Quelle leider nicht gemerkt) die ein var_dump string von einen Array in ein PHP-Array konvertiert und nach meinen Erfahrungen gut funktioniert. Habe diese nur ein wenig angepasst, um den Autoloader in meiner Testconsole nutzen zu können:
Benutzung:
Ausgabe:
Die Funktion:
LG jspit
Habe da eine Funktion gefunden (Quelle leider nicht gemerkt) die ein var_dump string von einen Array in ein PHP-Array konvertiert und nach meinen Erfahrungen gut funktioniert. Habe diese nur ein wenig angepasst, um den Autoloader in meiner Testconsole nutzen zu können:
Benutzung:
PHP-Code:
$var_dump_output = 'array(1) { [0]=> array(4) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> array(3) { [0]=> int(3) [1]=> int(4) [2]=> int(5) } ["d"]=> string(3) "End" } }';
$testData = Helper::unvar_dump($var_dump_output);
debug::write($testData); //Testausgabe
PHP-Code:
array (
0 =>
array (
'a' => 1,
'b' => 2,
'c' =>
array (
0 => 3,
1 => 4,
2 => 5,
),
'd' => "End",
),
)
PHP-Code:
<?php
class Helper{
public static function unvar_dump($str) {
$str = str_replace(array("\r","\n"),"",$str);
if (strpos($str, "\n") === false) {
//Add new lines:
$regex = array(
'#(\\[.*?\\]=>)#',
'#(string\\(|int\\(|float\\(|array\\(|NULL|object\\(|})#',
);
$str = preg_replace($regex, "\n\\1", $str);
$str = trim($str);
}
$regex = array(
'#^\\040*NULL\\040*$#m',
'#^\\s*array\\((.*?)\\)\\s*{\\s*$#m',
'#^\\s*string\\((.*?)\\)\\s*(.*?)$#m',
'#^\\s*int\\((.*?)\\)\\s*$#m',
'#^\\s*bool\\(true\\)\\s*$#m',
'#^\\s*bool\\(false\\)\\s*$#m',
'#^\\s*float\\((.*?)\\)\\s*$#m',
'#^\\s*\[(\\d+)\\]\\s*=>\\s*$#m',
'#\\s*?\\r?\\n\\s*#m',
);
$replace = array(
'N',
'a:\\1:{',
's:\\1:\\2',
'i:\\1',
'b:1',
'b:0',
'd:\\1',
'i:\\1',
';'
);
$serialized = preg_replace($regex, $replace, $str);
$serialized = preg_replace_callback(
'#\\s*\\["(.*?)"\\]\\s*=>#',
function($match){
return "s:".strlen($match[1]).':"'.$match[1].'"';
},
$serialized
);
$serialized = preg_replace_callback(
'#object\\((.*?)\\).*?\\((\\d+)\\)\\s*{\\s*;#',
function($match){
return "O:".strlen($match[1]).':"'.$match[1].'":'.$match[2].":{";
},
$serialized
);
$serialized = preg_replace(
array('#};#', '#{;#'),
array('}', '{'),
$serialized
);
return unserialize($serialized);
}
}
Kommentar