Analysefehler: Syntaxfehler, unerwartete T_FUNCTION-Zeile 10?

Lesezeit: 4 Minuten

Analysefehler Syntaxfehler unerwartete T FUNCTION Zeile 10
Acrs

Was ist falsch an meinem Code? Ich habe den Code auf meinem Testserver ausgeführt und der Code hat funktioniert, aber wenn ich ihn auf meinen Produktionsserver hochlade, bekomme ich

Parse error: syntax error, unexpected T_FUNCTION in /hermes/bosweb/web013/b130/ipg.acrsflcom/darayngedbeats/gentest.php on line 10

Hier ist mein Code

$old = "http://darayngedbeats1.s3.amazonaws.com    /mp3/CrazyMonsta2.mp3?AWSAccessKeyId=AKIAJXA36ESCLQHCB54Q&Expires=1297279906& Signature=HD36ZQE8yeTIW6JPWKMcciPTiTs%3D"; //enter the key that needs to be converted
$search =  array(":","?","=","&","%");
$replace = array("%3A","%3F","%3D","%26","%25");

function search_replace($s,$r,$sql)
{ $e="/(".implode('|',array_map('preg_quote', $s)).')/';
  $r = array_combine($s,$r);
  return preg_replace_callback($e, function($v) use ($s,$r) { return $r[$v[1]];  },$sql);
}

echo "<br><br>";
$new = search_replace($search,$replace,$old);
echo $new;

?>

  • Ich vermute, es hat mit der Callback-Funktion zu tun

    – Foo Bah

    9. Februar 11 um 19:37 Uhr

  • Zeile 7 return preg_replace_callback($e, function($v) use ($s,$r) { return $r[$v[1]]; },$sql);

    – acrs

    9. Februar 11 um 19:39 Uhr

  • F: “Welche Linie ist Linie 10?” – A: “Zeile 7 [code]” Ich habe laut gelacht.

    – Schuh

    9. Februar 11 um 19:51 Uhr


  • Zeile 7 ist 10. return preg_replace_callback

    – acrs

    9. Februar 11 um 19:55 Uhr

1642791245 434 Analysefehler Syntaxfehler unerwartete T FUNCTION Zeile 10
mager

Der Fehler wird wahrscheinlich verursacht durch

return preg_replace_callback($e, function($v) use ($s,$r) { return $r[$v[1]];  },$sql);

Wahrscheinlich verwenden Sie PHP 5.2 oder früher, das Closures nicht unterstützt. Sie können herausfinden, welche Version von PHP Sie verwenden phpinfo().

Sie müssen wahrscheinlich entweder auf PHP 5.3+ aktualisieren oder verwenden create_function, oder schreiben Sie eine statische Funktion und übergeben Sie sie als a Ruf zurück.

Hier ist ein Beispiel für die letzte Option, bei der eine einfache Klasse zum Speichern des Zustands verwendet wird $r:

class My_callback {
  public function __construct($s, $r) {
    $this->s = $s; $this->r = $r;
  } 

  function callback($v) { return $this->r[$v[1]]; }
}

function search_replace($s,$r,$sql) {
  $e="/(".implode('|',array_map('preg_quote', $s)).')/';
  $r = array_combine($s,$r);
  $c = new My_callback($s, $r);
  return preg_replace_callback($e, array($c, 'callback'), $sql);
}

  • ok das habe ich probiert $newfunc = preg_replace_callback($e, create_function($v) use ($s,$r) { return $r[$v[1]]; },$sql); jetzt bekomme ich Parse error: syntax error, unexpected T_USE in /hermes/bosweb/web013/b130/ipg.acrsflcom/darayngedbeats/gentest.php on line 10

    – acrs

    9. Februar 11 um 19:56 Uhr


  • @user514584: use existiert auch nicht vor PHP 5.3. Sie sollten die Dokumentation gelesen haben, auf die @meagar verlinkt ist, um zu sehen, wie create_function funktioniert. Wieder hier: php.net/manual/en/function.create-function.php. Mit können Sie leider keine Closures erstellen create_function Sie müssen also über eine andere Art des Zugriffs nachdenken $r und $e im Rückruf.

    – Felix Klinge

    9. Februar 11 um 20:14 Uhr


  • @user Versuchen Sie einfach, eine reguläre Funktion zu schreiben und als Zeichenfolge zu übergeben.

    – mager

    9. Februar 11 um 20:17 Uhr

  • Wird eine Funktion nicht als String übergeben, wird eval() verwendet? eval ist böse, wie ich mich erinnere. Es öffnet zu viele Sicherheitslücken. Einfach extrahieren und benennen.

    – Scott M.

    9. Februar 11 um 20:21 Uhr

  • @Scott Ich spreche von einem Ruf zurück, das gleiche, zu dem Sie übergehen würden call_user_func. Es hat nichts damit zu tun eval.

    – mager

    9. Februar 11 um 20:27 Uhr


Für alle, die diesen Fehler unter PHP 5.3+ und insbesondere mit einem WordPress-Theme erhalten, würde ich empfehlen, sich die Formatierung der tatsächlichen Dateien auf dem Server anzusehen.

Als ich auf diesen Fehler stieß und die PHP-Dateien ansah, die den Fehler auf dem Server auslösten, hatten sie keine Zeilenumbrüche und wurden effektiv auf eine Zeile reduziert.

Aus irgendeinem Grund hat Filezilla die Zeilenumbrüche entfernt, als ich die Dateien hochgeladen habe, und dies hat denselben Fehler verursacht.

Durch Ändern des Übertragungstyps in Filezilla in Binary (Transfer > Transfer Type > Binary) und erneutes Hochladen des WordPress-Designs wurde mein Problem behoben!

Ich hoffe, das hilft jemandem!

  • Vielen Dank dafür!! Hätte nie gedacht, das zu versuchen, aber es hat tatsächlich meine 500 Fehler behoben 🙂

    – Michèle

    9. November 15 um 17:32 Uhr

  • Danke dir auch. Habe gerade auch meinen Speck gerettet!

    – Schotte

    22. Mai 16 um 12:41 Uhr

  • Danke, dass du das teilst, das hat mir wirklich geholfen

    – Sam

    23. März 17 um 12:55 Uhr

  • Dies war ein Glücksfall für mich. Ich habe Stunden gesucht, um die Antwort zu finden, und das hat sie endlich behoben. Vielen Dank, dass du das gepostet hast!!

    – zpert

    1. September 17 um 17:21 Uhr

Versuchen Sie, Ihre Callback-Funktion in eine separate benannte Funktion zu extrahieren und namentlich darauf zu verweisen.

1642791246 266 Analysefehler Syntaxfehler unerwartete T FUNCTION Zeile 10
Foo Bah

Ich denke, Sie suchen nach create_function: http://php.net/manual/en/function.create-function.php

create_function wird sowohl in php4 als auch in php5 unterstützt

Inzwischen ist diese Frage größtenteils veraltet, da es 5.3 schon lange gibt, aber neben den Punkten, die durch die anderen Antworten aufgeworfen wurden, möchte ich darauf hinweisen, dass das, was Sie versuchen, bereits mit getan werden kann strtr():

$new = strtr($old, array(
  ':' => '%3A',
  '?' => '%3F',
  '=' => '%3D',
  '&' => '%26',
  '%' => '%25',
));

1642791246 510 Analysefehler Syntaxfehler unerwartete T FUNCTION Zeile 10
Kreshnik

PHP Parse error:  syntax error, unexpected 'function' (T_FUNCTION)

In meinem Fall habe ich diesen Fehler behoben, indem ich am Ende einer zuvor deklarierten Variablen ein Semikolon hinzugefügt habe, das ich vergessen habe.

.

579580cookie-checkAnalysefehler: Syntaxfehler, unerwartete T_FUNCTION-Zeile 10?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy