AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet
Thema durchsuchen
Ansicht
Themen-Optionen

PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet

Ein Thema von Matze · begonnen am 1. Nov 2013 · letzter Beitrag vom 4. Nov 2013
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet

  Alt 1. Nov 2013, 11:58
Hallo zusammen,

ich nutze folgenden Code:
Code:
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);
}
Wie kann das denn so umgeschrieben werden, dass "preg_replace_callback" verwendet wird?
Ich bekomme es irgendwie nicht gebacken.

Grüße
Matze
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet

  Alt 4. Nov 2013, 12:26
Keiner ne Idee?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet

  Alt 4. Nov 2013, 13:13
http://www.php.net/manual/en/referen....modifiers.php

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);
}
$2B or not $2B

Geändert von himitsu ( 4. Nov 2013 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: PHP 5.5: preg_replace mit Modiefier "/e" ist veraltet

  Alt 4. Nov 2013, 13:39
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:

Wenn man bei PHP Methoden als Callback-Parameter verwenden will, muss man das so schreiben: array($this, 'methodenName') .

Also z.B.

PHP-Quellcode:
public function replace_callback($m)
{
   return irgendwas;
}

public function replace_mod_rewrite($code)
{
   ...
   return preg_replace($url_in, array($this, 'replace_callback'), $code);
}
(Und falls replace_callback statisch wäre, wäre der erste Eintrag im Array stattdessen der Klassenname).


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 .

Geändert von Namenloser ( 4. Nov 2013 um 13:42 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz