getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 01.05.2005, 18:49   #1
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg

RegEx


Hi,

beim sonntäglichen herumstöbern habe ich folgende Zeile in einer Klasse gefunden.
PHP-Code:
preg_replace_callback($pattern, array(&$this'replaceAll'), $string); 
Das wird innerhalb einer Klasse aufgerufen und replaceAll ist eine Memberfunktion.

Ich kann allerdings nicht mit diesem "array(&$this, 'replaceAll')" anfangen???


Kann mir das jemand erklären, wie ich das zu deuten habe und was PHP in diesem Fall macht?

lg Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten


Alt 01.05.2005, 19:01   #2
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
Zitat:
Abgesehen von der Tatsache, dass statt des Parameters Ersatz ein Callback angeben werden soll, dem ein Array von Übereinstimmungen mit der durchsuchten Zeichenkette übergeben wird, ist das Verhalten dieser Funktion identisch zu preg_replace(). Der Callback sollte die Ersetzungs-Zeichenkette liefern.
http://de2.php.net/preg_replace_callback
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
HoRnominatoR ist offline   Mit Zitat antworten
Alt 01.05.2005, 21:38   #3
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
nuja, die Suche hatte ich auch schon bemüht. Allerdings kommen da so ca. 50 000 000 000 Einträge, die alle nur den Text aus der PHP-Doc kopiert haben.
Das hilft mir nicht weiter.

Mir ist es schon so ungefähr klar. Es wird die Funktion "replaceAll" aufgerufen, als Argument wir der gefundene Text (als Array) eingesetzt. Dabei ist "[0]" der gesamte gefundene Ausdruck, [1] der Teil in der ersten Klammer "(w+)", "[2]" der Teil in der zweiten und so weiter...

allerdings müßte ja dann dieses funktionieren. Macht es aber nicht:

PHP-Code:
class bla{
 public function 
assign($name$value)
    {
        
$this->varList[$name] = $value;
    }
    
    public function 
parseString($string){
        
        
$pattern '%\{\$(w+)\}%';    
        
$string preg_replace_callback($pattern, array(&$this'replaceVar'), $string);
        return 
$string;  
    }
   
    private function 
replaceVar($a
    {
        return 
$this->varList[$a[1]];    // wie oben erklärt
    

}
    
$templ = new bla();
    
$templ->assign("foo","NICONICONICO");
    echo 
$templ->parseString('Hallo Welt {$foo} testestestest.'); 
... sichtlich bin ich noch nicht dahinter gestiegen...

vielleicht kann es mir jemand besser erklären?

Danke Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Alt 03.05.2005, 18:07   #4
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
Keiner?

Aber vielleicht hat ja der eine oder andere eine Idee, wie ich Variablen suchen und ersetzten kann. Dabei will ich allerdings die Werte erst aus den "gefundenen" werten ermitteln.

Grüße Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Alt 03.05.2005, 18:15   #5
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
versuchs doch mal mit

$string = preg_replace_callback($pattern, 'replaceVar', $string);

so kenn ich das
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 03.05.2005, 18:20   #6
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
schau dir diese Zeile:
PHP-Code:
$pattern '%\{\$(w+)\}%'
nochmal genau an

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 03.05.2005, 19:05   #7
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
@Steffen
Das habe ich probiert, hatte aber keinen Erfolg damit. Vielleicht liegt es ja daran, dass eine Memberfunktion der Klasse aufgerufen werden muss?
Keine Ahnung...

@Stuck Mojo
Was ist da falsch? Ich habe die "Anfangszeichen" (%) dann eine Maskierte geschweifte Klammer (\{) ein maskiertes Dollarzeichen (\$) und dann den String ((w+)) und alles nochmal rückwärts (\}%)

Das hier soll gefunden werden {$var}.

Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Alt 03.05.2005, 19:37   #8
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Anders gefragt: Wie würde dein Regex aussehen, wenn du eine Variable die so aussehen kann replacen willst:

$www oder $w oder $wwwwww oder $wwwwwwwwwwwwww ?

Oder ists evtl. schon so?

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 03.05.2005, 19:38   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
mal (\w+) getestet ?
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 03.05.2005, 20:11   #10
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
ok, also es ist (\w+) gewesen.
Naja ich hätte den Ausdruck schon mal in einer einfacheren "Umgebung" testen können.

Danke nochmal an Euch
Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
RegEx RegEx
« JS-Problem mit createrange() | Smarty Projekte gesucht »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

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 an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67