Portal > Foren > PHP > PHP-Programmierung > Problem mit Pattern
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 24.10.2007, 17:19 Nach oben    #1
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard Problem mit Pattern

Hallo,
ich habe folgendes URL-Schema:
Code:
/:category/:id/:title
und Folgnde URL:
Code:
/category/1/
Das heißt, das Schema und die URL passen nciht zusammen, es fehlt ein teil.
Ich prüfe mit folgendem Pattern ob das stimmt:
Code:
#([a-zA-Z0-9\.]+)/*([a-zA-Z0-9\.]+)/*([a-zA-Z0-9\.]+)/*#
Wenn es stimmt dann findet er das auch, aber wenn es jetzt Falsch ist (wie im Obigen Beispiel) gibt er mir folgendes zurück:
Code:
array(4) {
  [0]=>
  array(1) {
    [0]=>
    string(11) "category/1/"
  }
  [1]=>
  array(1) {
    [0]=>
    string(7) "categor"
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "y"
  }
  [3]=>
  array(1) {
    [0]=>
    string(1) "1"
  }
}
Mein Problem ist jetzt, das Pattern wird automatisch erstellt mit folgendem Code:
PHP-Code:
            $pattern  explode('/'$this->pattern); #$this-pattern ist das URL Schema
            
$preg_pattern "#";
            foreach (
$pattern as $val)
            {
                
                if (
preg_match('/\:(.*)/'$val))
                {
                    
$preg_pattern .= "([a-zA-Z0-9\.]+)/*";
                }else {
                    
$preg_pattern .= $var."/";
                }
            }
            
$preg_pattern .= "#";
            
$this->preg_pattern $preg_pattern
Wenn ich jetzt das Abschließende "/" Weglasse, dann funktioniert ja der Mittelteil nicht mehr.
Wie kann ich das Problem lösen?

EDIT: Weiß nciht genau. PAsst das Thema vlt. besser in ein anderes Forum? Wenn ja dann bitte nachsehen haben und verschieben ich war mir nicht sicher!
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php

Geändert von kampfgnom (24.10.2007 um 17:25 Uhr) Grund: Nachtrag hinzugefügt
kampfgnom 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 24.10.2007, 17:59 Nach oben    #2
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Ich würde sagen dein Regex ist etwas fehlerhaft. Aber schreib bitte nochmal genauer was du erreicht haben möchtest. Denn ich verstehe noch nicht ganz, warum die URI nicht zum Schema passen soll.

Heißt es das alle 3 Teile vorhanden sein müssen? Und das möchtest du prüfen?
Aber dann verstehe ich nicht ganz, warum du das Pattern generierst.
dago 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 24.10.2007, 18:05 Nach oben    #3
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Ok, dann nochmal
Also das Pattern muss immer passen.
Warum ich das Andere Pattern generiere? Naja wie soll ich sonst Prüfen ob die URL passt oder nicht.
Es wird später noch dazu kommen, dass man Auswählen kann, welche Zeichen Erlaubt sind. Also das zum Beispiel die id nur Zahlen enthalten darf.

Das Ganze soll am Ende die $_GET Variable Ersetzen.

War's etwas Verständlicher?
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom 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 24.10.2007, 18:19 Nach oben    #4
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Dann würde ich das so abändern:
PHP-Code:
                if (preg_match('/\:(.*)/'$val))
                {
                    
$preg_pattern .= "/([a-zA-Z0-9\.]+)";
                }else {
                    
$preg_pattern .= "/".$var;
                } 
Oder möchtest du mehrere ///... erlauben? Da * mach hier nicht wirklich sinn.
dago 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 24.10.2007, 18:21 Nach oben    #5
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Ja das wäre auch eine möglichkeit
Danke so funktioniert es.
Man muss nur den ersten "/" im Schema weglassen.
Danke!
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php

Geändert von kampfgnom (24.10.2007 um 18:27 Uhr)
kampfgnom 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 24.10.2007, 18:46 Nach oben    #6
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Zitat:
Man muss nur den ersten "/" im Schema weglassen.
Das ist halt so mit explode. Das erste Element ist in dem Fall leer und deswegen springt er zuerst in den Else-Zweig.

Bei dir ist jetzt allerdings grad so, dass alle Teile des Schemas vorhanden sein müssen. Bei Pfadangaben währe es aber auch sinnvoll zu prüfen, dass die URI zwar dem Schema entspricht aber nicht alle Teile vorhanden sein müssen. Das währe dann zum Beispiel so
Code:
(/([^/]+))?
Kenne das zumindest aus anderen Scripten so. Muss natürlich bei dir nicht der Fall sein.


EDIT: Du kannst statt extra Behandlung für den ersten Durchlauf trim vor explode verwenden.

Geändert von dago (24.10.2007 um 18:52 Uhr)
dago 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 24.10.2007, 19:00 Nach oben    #7
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Naja, letztenendes wüsste ich nicht wozu. Wenn die URL nicht komplett dem Schema entspricht, dann ist ja der Pfad falsch (also der virtuelle).
Oder meinst du damit, dass man evtl auch sowas wie die Index-funktion nutzt? Also wenn nichts angegeben, dann Index?
Wäre eine Möglichkeit...

Aber dir erstmal Danke für die Hilfe!!
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom 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 24.10.2007, 19:08 Nach oben    #8
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Zitat:
Zitat von kampfgnom Beitrag anzeigen
Oder meinst du damit, dass man evtl auch sowas wie die Index-funktion nutzt? Also wenn nichts angegeben, dann Index?
Wäre eine Möglichkeit...
Jup. Ist zumindest bei ZandFramework so ähnlich realisiert.

Aber allgemein bei Pfad angaben lässt ein Pfad /path/to/file.txt vermuten, dass auch /path/to oder /path/to/ (Eben die Index Geschichte) auch möglich ist.

OK bei URL ist es nicht immer der Fall. Aber das ist im Grunde die Eigenart eines Pfades.
dago 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 24.10.2007, 19:23 Nach oben    #9
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 433
Standard

Ja ok, das werde ich denke ich noch mit einbauen
__________________
Mein Blog: http://aedo.redio.de RSS: http://aedo.redio.de/feed
Kanedo CMS Projektseite: http://kanedo.redio.de/de/
RSS: http://kanedo.redio.de/rss.php
kampfgnom 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 E-Mails zu senden Jann Hendrik Plauderecke 7 25.05.2007 21:37
Problem mit LaTex (Facharbeit) mouCe Sonstige Programmiersprachen 6 04.12.2006 00:13
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19
Regex Pattern bluefish Allgemeine Java-Programmierung 3 09.08.2004 17:04


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