topical media & game development

talk show tell print

mashup-delicious-06-example6-9-lib-compat-var-export.php / php



  <?php
  // +----------------------------------------------------------------------+
  // | PHP Version 4                                                        |
  // +----------------------------------------------------------------------+
  // | Copyright (c) 1997-2004 The PHP Group                                |
  // +----------------------------------------------------------------------+
  // | This source file is subject to version 3.0 of the PHP license,       |
  // | that is bundled with this package in the file LICENSE, and is        |
  // | available at through the world-wide-web at                           |
  // | http://www.php.net/license/3_0.txt.                                  |
  // | If you did not receive a copy of the PHP license and are unable to   |
  // | obtain it through the world-wide-web, please send a note to          |
  // | license@php.net so we can mail you a copy immediately.               |
  // +----------------------------------------------------------------------+
  // | Authors: Aidan Lister <aidan@php.net>                                |
  // +----------------------------------------------------------------------+
  //
  // Id: var_export.php,v 1.2 2005/11/21 10:57:23 ggiunta Exp 
  
  
Replace var_export() @category PHP @package PHP_Compat gray http://php.net/function.var_export
author: Aidan Lister
version: Revision: 1.2 @since PHP 4.2.0 @require PHP 4.0.0 (user_error)

  
  if (!function_exists('var_export')) {
      function var_export(array, return = false, lvl=0)
      {
          // Common output variables
          indent      = '  ';
          doublearrow = ' => ';
          lineend     = ",\n";
          stringdelim = '\'';
  
          // Check the export isn't a simple string / int
          if (is_string(array)) {
              out = stringdelim . str_replace('\'', '\\\'', str_replace('\\', '\\\\', array)) . stringdelim;
          } elseif (is_int(array) || is_float(array)) {
              out = (string)array;
          } elseif (is_bool(array)) {
              out = array ? 'true' : 'false';
          } elseif (is_null(array)) {
              out = 'NULL';
          } elseif (is_resource(array)) {
              out = 'resource';
          } else {
              // Begin the array export
              // Start the string
              out = "array (\n";
  
              // Loop through each value in array
              foreach (array as key => value) {
                  // If the key is a string, delimit it
                  if (is_string(key)) {
                      key = str_replace('\'', '\\\'', str_replace('\\', '\\\\', key));
                      key = stringdelim . key . stringdelim;
                  }
  
                  val = var_export(value, true, lvl+1);
                  // Delimit value
                  /*if (is_array(value)) {
                      // We have an array, so do some recursion
                      // Do some basic recursion while increasing the indent
                      recur_array = explode(newline, var_export(value, true));
                      temp_array = array();
                      foreach (recur_array as recur_line) {
                          temp_array[] = indent . recur_line;
                      }
                      recur_array = implode(newline, temp_array);
                      value = newline . recur_array;
                  } elseif (is_null(value)) {
                      value = 'NULL';
                  } else {
                      value = str_replace(find, replace, value);
                      value = stringdelim . value . stringdelim;
                  }*/
  
                  // Piece together the line
                  for (i = 0; i < lvl; i++)
                      out .= indent;
                  out .= key . doublearrow . val . lineend;
              }
  
              // End our string
              for (i = 0; i < lvl; i++)
                  out .= indent;
              out .= ")";
          }
  
          // Decide method of output
          if (return === true) {
              return out;
          } else {
              echo out;
              return;
          }
      }
  }
  ?>


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.