php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.01.2005, 14:05  
Erfahrener Benutzer
 
Registriert seit: 01.08.2004
Beiträge: 113
Kofi
Kofi eine Nachricht über ICQ schicken
Standard preg_match matcht nicht auf alles

PHP-Code:
   preg_match("/\[CARD]([^\]]+)\[\/CARD\]/isU"$text$treffer);
   for(
$i=1$i<=(count($treffer)); $i++)
   {
      
$suchen "[CARD]" $treffer[$i] . "[/CARD]";
      
$ersetzen kartenbild($treffer[$i]);
      
$text str_replace($suchen$ersetzen$text);
   } 
Dieser Code soll bei einem eingegebenen Text zum Beispiel [CARD]Herzbube[/CARD] durch ein Bild der entsprechenden Karte ersetzen (Funktion kartenbild(), die keine Probleme macht).

Das funktioniert auch, allerdings nur beim ersten Auftreten innerhalb einer Reihe davon, also zum Beispiel aus

[CARD]Herzbube[/CARD]

[CARD]Karodame[/CARD]

[CARD]Pikzehn[/CARD]

[CARD]HerzaAss[/CARD]


wird

*bild*

[CARD]Karodame[/CARD]

[CARD]Pikzehn[/CARD]

[CARD]HerzaAss[/CARD]


Und wenn danach noch ein Text kommt und wieder eine Aufzählung, dann wird dort wieder die erste Karte ersetzt, und die nächste nicht.

Woran liegt das? Muss ich irgendwelche zusätzlichen modifier setzen? wenn ja, welche? Oder wie kann ich preg_replace benutzen, wenn ich den Rückgabewert einer Funktion als ERsetzung habe?
Kofi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.01.2005, 14:43  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

preg_match != preg_match_all

warum verwendest du nicht gleich preg_replace!? so wie dus jetzt machst, ists doch total umständlich ...
__________________
derHund ist offline  
Alt 06.01.2005, 15:54  
Erfahrener Benutzer
 
Registriert seit: 01.08.2004
Beiträge: 113
Kofi
Kofi eine Nachricht über ICQ schicken
Standard

Weil
PHP-Code:
$text preg_replace("/\[CARD]([^\]]+)\[\/CARD\]/isU"kartenbild($1), $text); 
nicht funktioniert. Wie mache ich das denn mit der Backreferance in der Funktion?
Kofi ist offline  
Alt 06.01.2005, 18:23  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

Zitat:
Wie mache ich das denn mit der Backreferance in der Funktion?
entweder suchst du nach meinem namen und preg_replace hier im forum, weil ich die antwort schon tausend mal geschrieben hab, oder du schaust ins manual ...

modifier e benutzen und die ersatzfunktion als (quasi per eval ausführbaren) string übergeben ...

Code:
..., ' kartenbild("$1")', ...
ungetestet
__________________
derHund ist offline  
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
preg_match matcht URL net Jacks Rache PHP Tipps 2007 21 07.11.2005 06:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_match mal treffer, preg_match findet nichts, preg_match findet nicht alles, preg_match isu

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.