php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.03.2005, 15:39  
Gast
 
Beiträge: n/a
Standard preg_replace ersetzt nur das 1. Vorkommen, trotz limit=-1

Im Manual steht für die Funktion "preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])"

If limit is specified, then only limit matches will be replaced; if limit is omitted or is -1, then all matches are replaced.

Allerdings wird trotz limit=-1 nur das erste Vorkommen ersetzt:

Code:
$string = "aaaaa %%GRAPHIC_mypic2.jpg%% bbbbbbbbbbb %%GRAPHIC_mypic2.jpg%%   cccccc %%GRAPHIC_mypic2.jpg%%";
$pattern = "/%%GRAPHIC_(.*)%%/ims";

print preg_replace($pattern, "$1", $string, -1);
liefert

Code:
aaaaa mypic2.jpg%% bbbbbbbbbbb %%GRAPHIC_mypic2.jpg%%   cccccc %%GRAPHIC_mypic2.jpg
erwartet hätte ich aber folgendes:

Code:
aaaaa mypic2.jpg bbbbbbbbbbb mypic2.jpg   cccccc mypic2.jpg
Probleme:

1. Nur das erste Vorkommen meines Suchstrings wird ersetzt (obwohl ich limit=-1 gesetzt habe).

2. $pattern = "/%%GRAPHIC_(.*)%%/ims"; eigentlich müsste doch nur der Teil zwischen "%%GRAPHIC_" und "%%" ersetzt werden, allerdings werden die letzten zwei "%%" auch noch mit verwendet?
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.03.2005, 15:49  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

was passiert denn wenn du limit ganz weg lässt.

nfg
robo47
robo47 ist offline  
Alt 26.03.2005, 15:59  
Gast
 
Beiträge: n/a
Standard weglassen bringt nichts...

Zitat:
Zitat von robo47
was passiert denn wenn du limit ganz weg lässt.
Das war das erste was ich überhaupt probiert habe!

Dann erhalte ich die gleiche Ausgabe, wie wenn ich ich limit=-1 setze:

Code:
$string = "aaaaa %%GRAPHIC_mypic2.jpg%% bbbbbbbbbbb %%GRAPHIC_mypic2.jpg%%   cccccc %%GRAPHIC_mypic2.jpg%%";
$pattern = "/%%GRAPHIC_(.*)%%/ims";

print preg_replace($pattern, "$1", $string);

aaaaa mypic2.jpg%% bbbbbbbbbbb %%GRAPHIC_mypic2.jpg%%   cccccc %%GRAPHIC_mypic2.jpg
 
Alt 26.03.2005, 16:08  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

naja dein .* match alles, der macht bis zum letzen %% das er findet versuchs mal mit
%%GRAPHIC_(.+?)%%

installier dir vieleicht mal regex coach, damit lassen sich regex super testen in realtime verändern und alles.

http://www.weitz.de/regex-coach/

mfg
robo47
robo47 ist offline  
Alt 26.03.2005, 16:18  
Gast
 
Beiträge: n/a
Standard Heureka!

Zitat:
Zitat von robo47
naja dein .* match alles, der macht bis zum letzen %% das er findet versuchs mal mit
%%GRAPHIC_(.+?)%%
installier dir vieleicht mal regex coach (...)
Danke für den Tipp! Jetzt funktionierts einwandfrei und den Regex Coach lade ich mir auch gerade runter, hört sich nach einem sehr brauchbaren Tool an!
 
Alt 26.03.2005, 20:31  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum.

Bemerkung:
Dass grosse 1x1 der Regulären Ausrücke entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq 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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace erstes vorkommen, str_replace nur erstes vorkommen, str_replace erstes vorkommen, preg_replace nur erstes vorkommen, php preg_replace erstes vorkommen, preg_replace erste vorkommen, php str_replace erstes vorkommen, php preg_replace nur erstes vorkommen, preg erstes vorkommen von, preg_replace alle vorkommen, preg_replace limit, preg_replace erstes auftreten, php erstes vorkommen ersetzen, preg_replace \erstes vorkommen\, regex erstes vorkommen, php preg_replace alle vorkommen ersetzen, php ersetzte nur die ersten beiden vorkommen eines strings, preg_match erstes vorkommen, php preg_match_ findet nur erstes vorkommen, regex \1. vorkommen\

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:27 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.