WinFuture-Forum.de: [php] Funktion Aus Ersetzungsstring Von Preg_replace Aufrufen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[php] Funktion Aus Ersetzungsstring Von Preg_replace Aufrufen


#1 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 21. Februar 2006 - 20:05

Hallo,

ich habe ein merkwürdiges Problem. Undzwar bastel ich gerade BBCodes und habe die folgende preg_replace-Anweisung:

$html = preg_replace('/\[match id=\"(.*)\" \/\]/', '<b>Match: '.bbhelper::getMatch_enemy('\\1').' </b>', $html);


Die Funktion wird zwar aufgerufen, nur wird \\1 nicht mit dem entsprechenden Wert gefüllt, sondern bleibt leer. Was mache ich denn falsch?

Ich weiß übrigens, dass meine RegEx nicht perfekt ist. :)

Vielen Dank schon jetzt.
- PelzigesWaldtier

Dieser Beitrag wurde von PelzigesWaldtier bearbeitet: 21. Februar 2006 - 20:06

0

Anzeige



#2 Mitglied ist offline   hasch 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.790
  • Beigetreten: 28. Januar 04
  • Reputation: 0
  • Wohnort:Localhost
  • Interessen:Ach so viele ...

geschrieben 22. Februar 2006 - 09:12

Wieso machst du es nicht einfacher?

$html = preg_replace('#\[b\](.*?)\[\/b\]#is', '<b>\\1</b>', $html);


Ersetzung wäre dann:
[b]Text[/b]


Edit:
Dein Fehler könnte aber auch am Suchstring liegen, sag mal wie dein Suchstring genau aussehen soll (Platzhalter)... Anderer Fehler könnte "" sein, setzte um den Suchstring mal "" und bei (.*) ''...

Dieser Beitrag wurde von hasch bearbeitet: 22. Februar 2006 - 09:15

0

#3 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 22. Februar 2006 - 20:34

Zitat

Dein Fehler könnte aber auch am Suchstring liegen


Also der Ausdruck ist auf jeden Fall in Ordnung, da bin ich mir ganz sicher, da "<b>Match: </b>" nachher erscheint. Ich hab's auch nochmal getestet. Da stimmt alles.

Zitat

Wieso machst du es nicht einfacher?


Ich kann es leider nicht einfach machen, da ich per BBCode eine ID entgegennehme und dann die Informationen zum Eintrag mit dieser ID herausfinden und ausgeben muss. Also muss ich eine Funktion verwenden, die den ganzen Kram aus der Datenbank holt. Nur klappt das leider nicht so wie ich will: \\1 ist nicht gefüllt, wenn es als Parameter an irgendeine Funktion übergeben wird (siehe oben).

Dieser Beitrag wurde von PelzigesWaldtier bearbeitet: 22. Februar 2006 - 20:34

0

#4 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 22. Februar 2006 - 20:57

Meiner Meinung nach wäre es auch ziemlich unlogisch wenn es funktionieren würde. Ich denke dass preg_replace_callback eher was für dich ist.
0

#5 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 24. Februar 2006 - 16:00

Ja, genau das suchte ich. Aber was mich verwundert ist, dass im PHP-Manual zu "preg_replace" auch das gemacht wird, was ich vorhabe. Nur mit dem Unterschied, dass es da funktioniert.

Beispiel 5 @ http://de.php.net/ma...reg-replace.php

Danke dir auf jeden Fall.

-PelzigesWaldtier
0

#6 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 24. Februar 2006 - 17:12

Naja, bei dir sieht es etwas anders aus. Du hast kein Array und auch nicht nur die Funktion in dem String und auch benutzt du eine Methode einer Klasse - was genau PHP davon nicht mag weiß ich nicht, aber ich denke das zweite.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0