Die Verarbeitung von URL-Parametern - name-Wert-Paare, getrennt durch Schrägstriche
Will ich haben URLs wie :-
URL 1 - www.projectname/module/search/param/1
URL 2 - www.projectname/param/1/module/search
Ich möchte einen PHP-code, welcher der oben genannten URLs als parameter und gibt ein array zurück, wie
Array("module" => "search", "param" => 1) (for URL 1)
Array("param" => 1, "module" => "search") (for URL 2)
So, dass ich das Ergebnis wie $_GET in meinem Projekt. Ich kam zu wissen, dass es wäre besser und einfacher, dies zu tun mit PHP als mit htaccess-rewrite-Regeln. Wenn Sie helfen können, mit rewrite-Regeln, die auch bitte helfen.
Kann es eine beliebige Anzahl von Parametern.
Ich habe diese Idee von CodeIgniter URL-handling-Bibliothek. Aber mein Projekt ist nicht auf Codeigniter, so kann ich nicht verwenden, die Bibliothek. Jeder standalone-code zu tun?
Vielen Dank im Voraus
- Ich glaube Zend_Router (check für Rechtschreib Fehler) getrennt werden kann von der ZF und verwendet werden, nur für die.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Funktion um den job zu erledigen. Beachten Sie, dass ich habe ausgefüllt, die URLs, wie
parse_url
muss das Schema. Es wird auch nicht auf ernst fehlerhaften URLs.Hier ist das Ergebnis:
Aber das ist wohl nicht sehr robust. Wenn es eine gut geschriebene Bibliothek gibt, die schon die Arbeit macht (wie vorgeschlagen von Itay Moav), dann sollten Sie auf jeden Fall hinein.
Php explodieren Funktion. Sie analysieren das Ergebnis und sehen, ob $resultEins ist ein gültiges Modul in Ihrer Anwendung so auf. Die Logik des parsers gehören sollte Ihre Anwendung. Zend_router, dass jemand erwähnt, tut die gleiche Sache, indem Sie versuchen, eine Zuordnung zu einem vorhandenen Modul/controller/action was auch immer $request-Objekt hat.
Verwenden die PHP-Funktion
parse_url
http://php.net/manual/en/function.parse-url.phpDamit kann man dann analysieren die
path
Abschnitt des Arrays.Kalt dann verwenden
explode
um Elemente in ein assoziatives array?edit: parse_url funktioniert mit den richtigen URLs nur
array_chunk ist eine nette Funktion für diese Aufgabe 🙂