yntax error, unexpected T_FUNCTION

Rpnexus

New member
28 August 2014
1
0
Hallo ich bin neu hier und hätte da ein Problem wo ich einfach alleine nicht drauf komme es zu lösen leider. Bis zu der Zeile:
return preg_replace_callback('/\`(.{1})|²#([a-fA-F0-9]{6});|²#([a-fA-F0-9]{3});/sU', function ($t) {
funktioniert der Code einwandfrei. Aber sobald er diese Zeile lesen möchte kommt ein
Parse error: syntax error, unexpected T_FUNCTION in /var/www/web0/html/logd/common.php on line 560
Wobei halt die Zeile 560 (Was nun Zeile 68 ist) die obige ist, hoffe jemand kann mir da helfen. Ich weiß das es nicht funktioniert weil es eine PHP 5.3 Version ist vom coding her, aber ich weiß auch das es in verschiedene function geteilt werden muss das es bei PHP 5.2 funktioniert und daran verzweifle ich. 8O
PHP:
function appoencode($data,$priv=false)
{
    global $nestedtags,$session,$appoencode;
    /* Überarbeitet und verkleinert von Eliwood =D */
    $output = "";
    while( !(($x=strpos($data,"`")) === false) )
    {
          $tag=substr($data,$x+1,1);
          $append=substr($data,0,$x);
          $output.=($priv?$append:HTMLSpecialChars($append));
          $data=substr($data,$x+2);
		   $data = parseHex($data);
          if($tag == "0")
      {
        if ($nestedtags['color']) $output.="</span>";
             unset($nestedtags['color']);
      }
      elseif($tag == "`")
      {
        $output.="`";
      }
      elseif($tag == "z")
      {
               // Zufällige Farbe - by Devilzimti
               $appoencode_s = $appoencode;
               shuffle($appoencode_s);
        $rand = e_rand(0,count($appoencode_s));
        if ($nestedtags['color']) $output.="</span>"; else $nestedtags['color']=true;
        $output.="<span style='color: #".$appoencode_s[$rand]['color'].";'>";
      }
      else
          {
            if(isset($appoencode[$tag]))
        {
              $tagrow = $appoencode[$tag];
              if(empty($tagrow['color']))
          {
            if($nestedtags[$tagrow['tag']] && strchr($tagrow['tag']," /")==false)
            {
              $output.="</".$tagrow['tag'].">";
              unset($nestedtags[$tagrow['tag']]);
            }
            elseif(strchr($tagrow['tag']," /")==true) $output.="<".$tagrow['tag'].">\n";
            else
            {
              $output.="<".$tagrow['tag']." ".$tagrow['style'].">";
              $nestedtags[$tagrow['tag']] = true;
            }
          }
          else
          {
            if ($nestedtags['color']) $output.="</span>"; else $nestedtags['color']=true;
            $output.="<span style='color: #".$tagrow['color'].";'>";
          }
        }
        else $output.=$tag;
          }
    }
	$hexopen = false;

function parseHex($txt){
    global $hexopen;
    return preg_replace_callback('/\`(.{1})|²#([a-fA-F0-9]{6});|²#([a-fA-F0-9]{3});/sU', function ($t) {
        global $hexopen;
        $r = '';
        if($hexopen){
            $hexopen = false;
            $r .= '</span>';
        }
        $h = !empty($t[2]) ? $t[2] : (!empty($t[3]) ? $t[3] : null);
        if($h !== null){
            $hexopen = true;
            $r .= '<span style="color:#'.$h.';">';
        }else{
            $r .= $t[0];
        }
        return $r;
    },$txt).($hexopen?'</span>':'');
}
    if ($priv)
          $output.=$data;
      else
          $output.=HTMLSpecialChars($data);
    return $output;
}

function stripHex($str_input) {
      return preg_replace('/(²#[abcdef0-9]{6};|²#[abcdef0-9]{3};)/i','',$str_input);
}
 
Du musst ganz einfach deiner bisher anonymen Funktion (2. Parameter deines preg_replace_callback) einen Namen geben.
Diesen Namen trägst du dann statt der funktion selbst ein.

BTW inzwischen gilt sogar PHP 5.4 bereits als veraltet.