Portal > Foren > PHP > PHP-Programmierung > Problem mit Regex
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 09.10.2006, 21:57 Nach oben    #1
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 79
Standard Problem mit Regex

Hi,
Probiere mich gerade mal wieder mit Regular Expressons...

Ich habe jetzt Z.B. folgenden String:
,./modules/artikel/startBox/TopRatedArtikel.php,artikel.php,news.php

So, jetzt muss ich mit preg_replace den Teil ./modules/artikel/startBox/TopRatedArtikel.php rausnehmen, also durch einen leeren string ersetzen.
Es kann aber auch sein, dass vor dem ./modules/artikel/startBox/TopRatedArtikel.php nichts ist, also auch kein Komma.
Hier mein bisheriger Ansatz:
(^|,)./modules/artikel/startBox/TopRatedArtikel.php(,|$)

Aber damit passiert nichts.

Ich muss dazu noch sagen, dass vor dem Teil entweder ein Komma oder es ist am Anfang. Fürs Ende gilt das gleiche, also entweder ein Komma oder nichts.

Warum funktioniert das nicht?
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.10.2006, 21:59 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

split und abfragen ginge doch auch oder? (bin nicht so der regex-fan)
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.10.2006, 22:09 Nach oben    #3
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 79
Standard

Hi,
ja geht auch...^^

Hatte das auch am Anfang als Idee aber dann hatte ich die Idee mit dem replace, weil ich dann keine foreach-schleife machen muss (die dateien sind auch schon in einem array und muss die einzeln durchgehen).

Aber jetzt im nachhinein kommt es mir auch logisch vor das so zu lösen.

Danke!
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2006, 11:09 Nach oben    #4
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Wie wärs damit?
Code:
(,?)\./modules/artikel/startBox/TopRatedArtikel.php(,?)
(,?) bedeutet ein Komma, oder keins.
Den Punkt ('.') musst du mit \ escapen, da er eine bei Regex ein beliebiges Zeichen bedeutet.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2006, 11:13 Nach oben    #5
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 848
Standard

Ich würds mal so probiren:

Code:
<?php
$s = ',./modules/artikel/startBox/TopRatedArtikel.php,artikel.php,news.php';
$sPattern = '|^(?:,)?(' . preg_quote($s, '|') . ')(?:,(?:[\d\D]*))?$|';
?>
/edit: Hatte hier wohl den falschen String reinkopiert ... also einfach mal vergessen *g

...geht aber bestimmt auch einfacher - bin da nicht so firm.

Kodos ist übrigens ein nettes Tool, um passende RegExps zu finden. Für Windows und OS-X gibt es sowas bstimmt auch.

Basti

Geändert von Basti (20.10.2006 um 10:51 Uhr)
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2006, 11:18 Nach oben    #6
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 848
Standard

Zitat:
Zitat von Chr!s Beitrag anzeigen
Code:
(,?)\./modules/artikel/startBox/TopRatedArtikel.php(,?)
Findet z.B. auch den Teil in
Code:
x./modules/artikel/startBox/TopRatedArtikel.phpx
Passt also nicht auf die Anforderungen (nicht dass meiner unbedingt korrekt wäre - keine Ahnung).

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2006, 11:37 Nach oben    #7
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Ich muss dazu noch sagen, dass vor dem Teil entweder ein Komma oder es ist am Anfang. Fürs Ende gilt das gleiche, also entweder ein Komma oder nichts.
@Basi oh du hast recht Hab den Teil ganz überlesen.

Dann würde ich mal so in die Richtung steuern:
PHP-Code:
<?php
$sRegex 
'^(,?)(\./modules/artikel/startBox/TopRatedArtikel.php)(,?)$';
preg_match($sRegex$sString$aResult);
?>
Dieser Regex findet bei mir den gesuchten String, wenn
1) er ganz am Anfang steht oder
2) am Anfang steht aber ein Komma davor hat
3) ein Komma am Ende steht oder
4) nichts am Ende steht

Das müsste doch dann das sein, was der ThreadStarter wollte, oder?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2006, 11:57 Nach oben    #8
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 848
Standard

Nein. Zumindest in seinem Beispiel kommt nach dem Komma hinter dem Suchstring noch Zeugs.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.10.2006, 12:44 Nach oben    #9
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.369
Standard

zum testen kann ich folgende Seite empfehlen:
http://regex-tester.de/

*wink* @CIX88
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.10.2006, 06:28 Nach oben    #10
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 685
Standard

Wie oben schon gesagt wurde, muss der Punkt auskommentiert werden:

Code:
(^|,)\./modules/artikel/startBox/TopRatedArtikel\.php(,|$)
Und je nach verwendetem Zeichen für Start und Ende des RegEx muss dieser natürlich auch noch excaped werden. Ansonsten sollte der RegEx von dir eigentlich schon funktionieren, jedoch entzeiht es sich meiner Logik, warum man direkt nach einer solchen Zeichenfolge mit RegEx sucht, RegEx wird eigentlich eher dazu verwendet, bestimmte Inhalte aus Zeichenketten zu filtern / ersetzen, aber hier hat man einen String mit einer ewig langen Zeichenkette und ersetzt manuell eine ebenfalls lange Zeichenkette, die bereits bekannt ist. Die Vorteile von RegEx gehen darin nicht so wirklich auf und die Geschwindigkeit sollte darunter eventuell leiden, wenn mich nicht alles täuscht.
Empfehlen werde ich daher eher die Funktion str_replace(). Sollte gewünscht sein die Kommata ebenfalls zu entfernen, so kann man JETZT noch einen kleinen RegEx anwenden, denn man weiß im Gegensatz zur bekannten Zeichenkette ja nicht, wieviele Kommata eigentlich vorhanden sind, die ersetzt werden müssen:

PHP-Code:
$text preg_replace ('°([,]{2,})°s'','$text); 
Mit dem RegEx erreicht man, dass immer dann, wenn mehr als ein Komma nacheinanderkommen, die komplette Zeichenkette durch nur ein einziges Komma ersetzt wird.

Beispiel:

test.php,,,,test2.php,,test3.php -> test.php,test2.php,test3.php
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit zu vielen MySQL-Querys / Grundkonzeption Chr!s PHP-Programmierung 13 27.08.2006 16:59
Logisches Problem beim einsatz von Ereignissen Prophet Allgemeine Java-Programmierung 19 05.06.2006 22:08
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
RegEx Problem bacarni PHP-Programmierung 3 18.02.2006 17:09
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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