Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Regex Ausdruck für mehrere Urls

Frage Entwicklung PHP

Mitglied: ChrisFah

ChrisFah (Level 1) - Jetzt verbinden

23.02.2013 um 10:33 Uhr, 2246 Aufrufe, 4 Kommentare

Hallo, ich benötige wieder mal Hilfe. Ich suche einen passenden regex Ausdruck für eine bestimmte Url Struktur einer Site..

Die folgenden Url-Strukturen solen mit einem Regex Ausdruck erfasst werden,
leider komm ich nicht zu dem gewünschten Ergebnis

Unterstützt müssen folgende Urls werden:


www.domain.com = root
www.domain.com/de = root mit gewählter Sprache( alternativ auch fr, it usw.)
www.domain.com/de/ = root mit gewählter Sprache
www.domain.com/de/function/name_der_funktion/123 = funkttionen wie Login usw.
www.domain.com/de/admin/name_der_adminfunktion/123 = diverse Admin Seiten
www.domain.com/de/account/name_der_accountfunktion/123 = diverse Account Seiten der user
www.domain.com/de/Kategoriename/12345 = kategorieseite
www.domain.com/de/kategoriename/Artikelname/12345,98765 = Artikelseite, wobei 12345 = KategorieID und 98765 = ArtikelID

Ausser bei der root Seite kommt überall die Sprache dazu.
Wichtig sind folgende Teile der Url:
de = Sprachauswahl
function|admin|account zusammen mit der Zahl am Ende der Url (= bestimmt die eigentliche Funktion)
Die Zahl bei Kategorieseiten ergibt die KategorieID (der text davor ist egal)
Die Zahlen bei Artikelseiten ergeben die Artikel ID (der text davor ist egal)
Die texte bzw. Namen der Funktionen dazwischen sing egal.

leider bekomm ich es nicht hin, daß die Zahlen, sofern vorhanden, immer in ein und er selben $match-Gruppe stehen (zB $macht[4])eine nichtgenutzte leer bleibt. Mein bisheriger Ansatz sieht so aus:

preg_match("#^\/([de|fr|it]{2})?\/?([\w\-]*)\/?([\w\-]*)?\/?([\d]+,?[\d]*)?$#i", $_SERVER['REQUEST_URI'], $match);

Wer kann mir da weiterhelfen?

Lg, ChrisFah
Mitglied: 64748
23.02.2013, aktualisiert um 15:18 Uhr
Hallo,

erster Punkt der mir auffällt ist folgender
[de|fr|it]
findet nicht de oder fr oder it sondern Zeichenfolgen wie dfi, eft usw.
[de|fr|it] bedeutet eines der beiden Zeichen 'd' oder 'e' oder eines der beiden Zeichen 'f' oder 'r' usw.

Du meinst vermutlich (de|fr|it)

Und bitte erklär mal genauer, welchen output Du erwartest. Welche Datenstruktur soll denn die extrahierten Daten enthalten?

Markus

Korrektur: der Code ([de|fr|it]{2}) findet tatsächlich die Zeichenfolgen de, fr und it, der Fehler ist aber, dass er auch Zeichenfolgen wie dd, ee, ff usw. findet.
Bitte warten ..
Mitglied: colinardo
23.02.2013, aktualisiert um 14:31 Uhr
Hi ChrisFah,
wie wäre es wenn du "named groups" verwendest ? In deinem Beispiel würde die Regex z.B. so aussehen:
"#^\/(?P<language>de|fr|it)?\/?(?P<hauptfunktion>[\w\-]*)?\/?(?P<unterfunktion>[\w\-]*)?\/?(?P<numbers_part1>[\d]+)?,?(?P<numbers_part2>[\d]*)?$#i"
Dann kannst du auf die jeweiligen Gruppen in dieser Art zugreifen:
$match['language'] 
$match['hauptfunktion'] 
$match['unterfunktion'] 
$match['numbers_part1'] 
$match['numbers_part2']
Eine named group wird nach folgendem Schema erstellt:
(?P<GRUPPENNAME>.....)
Das sollte dein Problem lösen.
p.s. Ein Programm das bei Regex-Problemen sehr gute Unterstützung bietet -> RegexBuddy

Grüße Uwe
Bitte warten ..
Mitglied: ChrisFah
23.02.2013 um 15:33 Uhr
Hallo, stimmt, das sollte in () stehen. Der colinario hat mir die Lösung bereits perfekt geliefert. So klappt es wie ich es wollte.
Danke für Deine Mühe !!!
Lg, ChrisFah
Bitte warten ..
Mitglied: ChrisFah
23.02.2013 um 15:36 Uhr
@colinaro:
Hallo, danke für Deine Mühe und den Tipp.
Ich habs so gelöst:
"#^\/(?P<language>de|fr|it)?\/?(?P<function>admin|fn|my|content)?\/?(?P<text>[\w\-]*)?\/?(?P<id_1>[\d]+)?,?(?P<id_2>[\d]*)?$#i"

Klappt perfekt! Danke, ChrisFah
Bitte warten ..
Ähnliche Inhalte
Entwicklung
RegEx Formulierung
gelöst Frage von Aki-kunEntwicklung3 Kommentare

Grüße zusammen, RegEx und ich sind inkompatibel . Ich bekomme den Ausdruck einfach nicht hin. (AusdruckA oder AusdruckB oder ...

Batch & Shell
Powershell Regex anders
gelöst Frage von ukodusBatch & Shell1 Kommentar

Hi, kann es sein, dass die Regex-Implementierung anders ist, als gewohnt? Der Regex funktioniert nämlich auf regexr.com -> Was ...

Batch & Shell
Hilfe bei REGEX
gelöst Frage von istike2Batch & Shell9 Kommentare

Hi, Ich habe hier 5 Strings, die ich mit Script filtern sollte. Kann mir jemand verraten, warum "^ -+ ?(\d*\.?\d+ +1000 ...

Windows Tools
Findstr und regex
gelöst Frage von tobmesWindows Tools5 Kommentare

Hi Experten, ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 2 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit7 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...