![]() |
PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet
Hallo zusammen,
ich nutze folgenden Code:
Code:
Wie kann das denn so umgeschrieben werden, dass "preg_replace_callback" verwendet wird?
private function create_regex($params, $regex_flag = '', $php_filename = 'index')
{ $regex = "'(http://[^<>\"]*?/)" . $php_filename . "\.php"; if (!empty($params)) { $first_param = true; foreach ($params as $name => $chars) { if ($first_param) { $regex .= "\?$name=($chars)"; $first_param = false; } else { $regex .= "&(?:amp;)?$name=($chars)"; } } } $regex .= "'" . $regex_flag; return $regex; } // Aufruf public function replace_mod_rewrite($code) { $url_in = array(); $url_out = array(); $url_in[] = $this->create_regex(array('page' => '(?!admin_)[a-z_]*', 'id' => '[0-9]+'), 'e'); $url_out[] = "'$1$2/$3/' . \$this->get_title_str('$2', $3) . '.html'"; return preg_replace($url_in, $url_out, $code); } Ich bekomme es irgendwie nicht gebacken. :( Grüße Matze |
AW: PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet
Keiner ne Idee? :duck:
|
AW: PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet
![]() Die Demo von da hilft nicht? Ich glaub das würde etwa so aussehn:
PHP-Quellcode:
public function replace_callback($m)
{ return "'$m[1]$m[2]/$m[3]/' . \$this->get_title_str('$m[2]', $m[3]) . '.html'"; } public function replace_mod_rewrite($code) { $url_in = array(); $url_in[] = $this->create_regex(array('page' => '(?!admin_)[a-z_]*', 'id' => '[0-9]+')); return preg_replace($url_in, replace_callback, $code); } |
AW: PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet
Der Code ist irgendwie schwer lesbar, wahrscheinlich hat sich deshalb so lange niemand gemeldet. Es wäre hilfreich, mal zumindest ein Beispiel zu haben, was für einen Ausdruck create_regex ausgeben könnte. Zu versuchen, mir vorzustellen, was hinterher in $1, $2 und $3 stehen könnte, macht mir Kopfschmerzen...
Außerdem könntest du vielleicht noch mal genauer erläutern, woran du scheiterst. Ich mache trotzdem mal auf gut Glück einen Glaskugel-Versuch: :glaskugel: Wenn man bei PHP Methoden als Callback-Parameter verwenden will, muss man das so schreiben:
Delphi-Quellcode:
.
array($this, 'methodenName')
Also z.B.
PHP-Quellcode:
(Und falls replace_callback statisch wäre, wäre der erste Eintrag im Array stattdessen der Klassenname).
public function replace_callback($m)
{ return irgendwas; } public function replace_mod_rewrite($code) { ... return preg_replace($url_in, array($this, 'replace_callback'), $code); } Ich glaube, ich hatte auch eine Weile gebraucht, um das rauszufinden... So wie bei himitsu und vielleicht bei dir (?) funktioniert das leider nicht, weil PHP grundsätzlich keine Funktionsreferenzen kennt, nur Strings :roll:. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz