preg_replace und create_function
Thomas
- php
$text = preg_replace_callback("![name=(.*)]!U", create_function('$1', '
$id = array_search($1);
if(!$id) die("Der Benutzer $1 konnte nicht gefunden werden");
return "<a href="http://www.meineurl.de/index.php?benutzer=$id">$1</a>";'), $text);
Oh, sry.
Ich hab scheinbar beim Code reinkopiern den Rest rausgelöscht :-(
Also meine Frage: Was ist denn an dieser Funktion falsch:
$text ist ein schon verarbeiteter textarea-Inhalt, es sollen teile wie z.B. [name=Hubert] durch <a href="http://www.meineurl.de/index.php?benutzer=2">Hubert</a> ersetzt werden.
Danke
Thomas
Hi Thomas!
Also meine Frage: Was ist denn an dieser Funktion falsch:
Wie merkst du denn, dass etwas falsch ist? Und bitte schreibe nicht, dass es nicht gehe.
MfG H☼psel
Sry, also ich erhalte folgende Fehlermeldung:
Parse error: syntax error, unexpected '$', expecting '&' or T_VARIABLE in /home/httpd/test.php(27) : runtime-created function on line 1
Da dürfte irgendetwas bei der Übergabe des durch den reg. Ausdruck ausgewählten Bereiches nicht passen, aber der wird doch in der temp. var $1 gespeichert, oder?
Danke
Thomas
Hi Thomas!
$text = preg_replace_callback("![name=(.*)]!U", create_function('$1', '
$id = array_search($1);
if(!$id) die("Der Benutzer $1 konnte nicht gefunden werden");
return "<a href="http://www.meineurl.de/index.php?benutzer=$id">$1</a>";'), $text);
Wenn du das Programmstück "create_function('$1',
" "übersetzt", kommt dabei folgendes heraus:
"create_function('Benutzername',
"
Laut Handbuch werden create_function als erstes die Funktionsargumente mitgegeben.
Meine Frage an dich: Musst du diese wirklich angeben oder hast du sie nicht schon längst? ;-)
Was passiert, wenn du einfach einen leeren String übergibst?
Ich selbst habe noch nie mit create_function gearbeitet. Aber vielleicht konnten dir meine Tipps ja helfen.
PS: Nochmal der Holzhammer: Der Benutzername ist kein gültiges Argument, das du der Funktion mitgeben kannst!
MfG H☼psel