2017-09-01 4 views
0

J'ai un code directement copié de php documentation site. Le code me permet d'imprimer la fonction "print_r" dans un format lisible. Le code est ci-dessousComment changer le nom du bouton print_r en utilisant javascript

function print_r_tree($data){ 
    // capture the output of print_r 
    $out = print_r($data, true); 

    // replace something like '[element] => <newline> (' with <a href="javascript:toggleDisplay('...');">...</a><div id="..." style="display: none;"> 

     $out = preg_replace('/([ \t]*)(\[[^\]]+\][ \t]*\=\>[ \t]*[a-z0-9 \t_]+)\n[ \t]*\(/iUe', 
    "'\\1<button onClick=\"javascript:toggleDisplay(\''.(\$id = substr(md5(rand().'\\0'), 0, 7)).'\');\"> 
      \\2 
      </button><div id=\"'.\$id.'\" style=\"display: none;\">'", 
     $out); 

    // replace ')' on its own on a new line (surrounded by whitespace is ok) with '</div> 
    $out = preg_replace('/^\s*\)\s*$/m', '</div>', $out); 

    // print the javascript function toggleDisplay() and then the transformed output 
    echo '<script language="Javascript">function toggleDisplay(id) { document.getElementById(id).style.display = (document.getElementById(id).style.display == "block") ? "none" : "block"; }</script>'."\n<pre>$out</pre>"; 
} 

Le code ci-dessus sortie trois boutons comme [ [0] => Array ], [ [1] => Array ] and [ [2] => Array ]. Mais je veux que le bouton soit sorti dans le format suivant [Good], [Average], and [Worst]. J'ai essayé de changer le « \ 2 » dans le texte sur le bouton à l'extrait de code JavaScript ci-dessous

$out = preg_replace('/([ \t]*)(\[[^\]]+\][ \t]*\=\>[ \t]*[a-z0-9 \t_]+)\n[ \t]*\(/iUe', 
    "'\\1<button onClick=\"javascript:toggleDisplay(\''.(\$id = substr(md5(rand().'\\0'), 0, 7)).'\');\"> 
//Writing Javascript code to display buttons instead of "//2" 
      <script type= \"text/javascript\"> 
      var behaviours = new array('Good', 'Average', 'Worst'); 
      for(var i = 0; i < behaviours.length; i++) 
      document.write(behaviours[i]); 
      </script>   

      </button><div id=\"'.\$id.'\" style=\"display: none;\">'", 
     $out); 

Mais il me donne des erreurs et des expressions régulières identifiant. Que puis-je faire à ce sujet s'il vous plaît.

Répondre

0

La copie aveugle d'un extrait de code aléatoire à partir d'un commentaire de documentation de php.net n'est pas une bonne approche sur quoi que ce soit. Surtout si tu ne sais apparemment pas ce que tu fais. Comprenez ce que vous faites.

Cela étant dit. Pourquoi ne pas changer le tableau $data avant qu'il ne soit print_r 'ed?

$data = ['Good' => $data[0], 'Average' => $data[1], 'Worst' => $data[2]];