var_dump 출력에서 배열 데이터 복구
var_export 및 serialize는 각각 배열을 사람이 읽을 수 있는 문자열로 변환하고 재구성하기 위한 편리한 솔루션을 제공합니다. , 이 코드 문제에는 충분하지 않습니다. 여기서 목표는 var_dump 출력에서 배열 구조를 추출하는 최적화되고 창의적인 접근 방식을 탐색하는 것입니다.
배열 추출을 위한 사용자 정의 함수
해결책에는 var_dump 출력 변환이 포함됩니다. 직렬화된 문자열로 변환한 다음 직렬화 해제하여 원래 배열을 다시 만들 수 있습니다. 이를 달성하기 위해 unvar_dump() 함수가 사용됩니다:
코드:
<code class="php">function unvar_dump($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); $func = create_function( '$match', 'return "s:".strlen($match[1]).":\"".$match[1]."\"";' ); $serialized = preg_replace_callback( '#\s*\["(.*?)"\]\s*=>#', $func, $serialized ); $func = create_function( '$match', 'return "O:".strlen($match[1]).":\"".$match[1]."\":".$match[2].":{";' ); $serialized = preg_replace_callback( '#object\((.*?)\).*?\((\d+)\)\s*{\s*;#', $func, $serialized ); $serialized = preg_replace( array('#};#', '#{;#'), array('}', '{'), $serialized ); return unserialize($serialized); }**Usage:** To use the function, simply pass the var_dump output as the input:
$originalArray = unvar_dump(var_dump($data));
Where $data is the original array that was var_dumped. The resulting $originalArray will now be a fully reconstructed array. **Tested on Complex Structures**
위 내용은 PHP의 var_dump 출력에서 배열을 어떻게 다시 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!