php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-07-2008, 08:40
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard [REGEX] Teil der URL matchen

Hallo,
sitz seit Stunden über einer RegEx ... bekomms einfach nicht hin ..

Also.. was ich möchte:

Ich nehm als Subject die Regex_Uri, gematcht werden soll der sprachcode ... also de, en, fr oder sonstwas .. wenn nicht vorhanden ... Sprachcode aus der Browser accept-language und dann redirecten

Nun können die URL folgendermaßen aussehen ...

example.com -> example.com/de/
example.com/portfolio -> example.com/de/portfolio

Erkannt wird auch, wenn:
example.com/de/ oder example.com/de/portfolio, so erfolgt halt kein redirect.

NICHT erkannt wird allerdings:
example.com/de also einfach nur ohne abschließendes Slash ...
Dumm natürlich, weil die meisten User zu faul sind um den letzten Slash zu tippen..ergo kann ich darauf nicht verzichten ...

Ich verwende zur Zeit folgenden Code:

PHP-Code:
$url_request $_SERVER['REQUEST_URI'];

if(!
preg_match('&(([a-z]{2})+)/&'$url_request$matches) || 
   !
preg_match('&(([a-z]{2})+)?/&'$url_request$matches)) {
    if(
strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'de')) {
        
$user_lang 'de';
    } else {
        
$user_lang 'en';
    }
    
$header WWW_ROOT '/'.$user_lang $url_request;
    
header("Location: $header");

Die Konstante WWW_ROOT enthält lediglich http://example.com.

Wäre super, wenn mir jemand helfen könnte, verzweifel allmählich..

Grüße, Dennis
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #2 (permalink)  
Alt 06-07-2008, 14:59
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

erweitere den letzten / durch den Quantifier ? also /?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 06-07-2008, 15:34
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard

Hallo Tobiaz

Ich habe jetzt nur noch diese Regex drin:
!preg_match('&(([a-z]{2})+)/?&', $url_request, $matches)

jetzt wird zwar example.com/de und example.com/de/ gematcht, aber sowas wie example.com/portfolio wird nicht mehr als fehlerhaft erkannt und nicht redirectet.

Was da fehlt ist sowas wie, wenn kein Zeichen, oder ein beliebiges Zeichen ausser / nach den ersten 2 Buchstaben kommt, leite das Ganze um und nimm den bisherigen Request als Parameter...
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #4 (permalink)  
Alt 06-07-2008, 15:36
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Ach so,

ja dann entweder /? oder $ (ende des Strings)
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 06-07-2008, 15:40
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard

Kay, wenn ich /? durch $ ersetze gibts nen redirect-Fehler, weil dann immer gematcht wird, falls ich /?$ setze ist dasselbe Problem wie vorher...
Bin ich so dumm oder will mein Lieblingslaptop mich nur wieder ärgern?!
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #6 (permalink)  
Alt 06-07-2008, 15:47
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Warum nimmst du nicht einfach das? http://de.php.net/manual/en/function.parse-url.php
Mit Zitat antworten
  #7 (permalink)  
Alt 06-07-2008, 15:58
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Nicht ersetzen, sondern ODER.
Zitat:
Bin ich so dumm oder will mein Lieblingslaptop mich nur wieder ärgern?!
Wenn du darauf wirklich ne Antwort willst, dann kann dein Laptop mit Sicherheit nichts dafür. Der tut nur was man ihm sagt...
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (06-07-2008 um 16:00 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 06-07-2008, 17:20
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard

Hier mal mein Code:

PHP-Code:
!preg_match('&(([a-z]{2}))/?&'$url_request$matches) or
!
preg_match('&(([a-z]{2}))/$&'$url_request$matches
Macht er nicht, hab es auch schon mit $ also nicht /$ probiert ... Umleitungsfehler

Versteh bald nix mehr..

Klar macht mein Mac nur das was ich ihm sage ...

Zumindest meistens ... nen bißchen Intelligenz, sprich eigenständige Korrektur von RegEx wäre echt praktisch ...

@ unset

Das ändert das Problem aber auch nicht, da parse_url auch nur nen array zurückgibt, wo dann als ein Teil der gesamte path zurückgegeben wird.
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #9 (permalink)  
Alt 06-07-2008, 17:25
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Du sollst das beides im Pattern unterbringen. Und das /$ macht natürlich gar keinen Sinn, weil das wieder voraussetzt, dass der User das / eingibt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #10 (permalink)  
Alt 06-07-2008, 17:32
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard

I versteh nix mehr ... egal, wie ich es versuche, der leitet es entweder garned um, oder er schmeißt ne Fehlermeldung raus ...
Wo in dem Pattern soll das denn bitte rein?

Sorry, dass ich dich damit so nerve!
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #11 (permalink)  
Alt 06-07-2008, 17:44
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Du hast das mit den RegExp noch nicht so ganz verstanden, oder?

Die zeichen müssen natürlich da rein, wo sie auch erwartet werden. In deinem Fall ist das ja ganz offensichtlich das ende des Strings.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #12 (permalink)  
Alt 06-07-2008, 17:49
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard

Stimmt... regex sind nicht wirklich meine Stärke.

Wenn ich das richtig verstehe, muss also sowas hier $/? in die Gruppe rein ...
(([a-z]{2})) und nicht dahinter ...
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #13 (permalink)  
Alt 06-07-2008, 18:01
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

dahinter ist schon okay. In der backreferenz wirds ja nicht gebraucht.

Dann musst du dir halt klar werden, dass entwerder ein / da sein soll, ODER das Ende des strings $. Wenn ichs mir Recht überlege, brauchst du das ? gar nicht.

!^([a-z]{2})(?=\/|$)!iUm
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (06-07-2008 um 18:13 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 06-07-2008, 18:46
Bersi667
 Newbie
Links : Onlinestatus : Bersi667 ist offline
Registriert seit: Mar 2007
Ort: Geldern/Duisburg
Beiträge: 87
Bersi667 ist zur Zeit noch ein unbeschriebenes Blatt
Bersi667 eine Nachricht über ICQ schicken
Standard

Das mit dem Fragezeichen hatte ich mir auch eben überlegt, das OR bekomm ich ja über |
Habe deine regex ausprobiert, aber nichts ... umleitungsfehler ...
Im Moment versuch ich das Ganze in etwa so zu schreiben:

PHP-Code:
!(^[a-z]{2}$|^[a-z]{2}/$)! 
Also entweder 2 buchstaben und nix dahinter oder 2 buchstaben und ein / dahinter ...
__________________
Musik beflügelt unseren Geist
Mit Zitat antworten
  #15 (permalink)  
Alt 06-07-2008, 18:51
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Habe deine regex ausprobiert, aber nichts ... umleitungsfehler ...
Wie sieht denn dein Subject aus?

Zitat:
m Moment versuch ich das Ganze in etwa so zu schreiben: PHP: !(^[a-z]{2}$|^[a-z]{2}/$)! Also entweder 2 buchstaben und nix dahinter oder 2 buchstaben und ein / dahinter ...
Und was ist mit de/portfolio? Schließt du ja wieder aus.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:32 Uhr.