teilstring aus URL
hande
- php
0 Richard0 Richard
0 Arthur Dent0 dedlfix
0 Mathias Brodala0 hande
moin,
ich bin auf der Suche nach der Möglichkeit einen Teilstring aus einem String Variabler Länge zu extrahieren.
der String sieht etwa so aus:
http://domaene.de/blabla/index.php?site=11&sort=name&sort_perpage=4
nun brauch ich aus diesem String die Variable (den Wert): "sort"
also in diesem Fall: "name".
hab das jetzt erstmal so:
$sort = substr($_POST[sort],strpos($_POST[sort],"sort="),11);
was reichlich unbefriedigend ist, weil die Länge: 11 variabel ist
$sort könnte auch z.B.: "nummer" sein.
also hab ich mir gedacht die positon des letzten Vorkommen des Zeichens:
"&" ( &sort_perpage=4) mit strpos zu ermitteln, aber das haut alles nicht richtig hin.
hat einer einen tip für die richtige reihenfolge/kombination zwischen substr/strpos/strchr/anderes?
vielen Dank
hande
Hallo hande,
http://us3.php.net/manual/de/function.strstr.php und dort verlinkte Funktionen, ggf. auch <http://us3.php.net/manual/de/function.preg-match.php@Reguläre Ausdrücke>.
Beste Grüße
Richard
Morgäähn,
Ich kenn mich mit PHP nicht so aus, aber du kannst doch die Länge des Strings bestimmen (glaube mit strlen(), oder so)
und mit substring (statt substr) die Zeichen von "Start-Index" bis "End-Index" auslesen
Also z.B.
$length = strlen("http://domaene.de/blabla/index.php?site=11&sort=name&sort_perpage=4")
$sort = SUBSTRING($_POST[sort],strpos($_POST[sort],"sort="), $length );
Wie und wo da "$" hin muss, weiss ich nicht (wie gesagt, keine Ahnung von PHP), aber das Prinzip sollte doch funktionieren, oder??
Gruß,
Arthur D.
echo $begrüßung;
ich bin auf der Suche nach der Möglichkeit einen Teilstring aus einem String Variabler Länge zu extrahieren.
der String sieht etwa so aus:
http://domaene.de/blabla/index.php?site=11&sort=name&sort_perpage=4
Konkret geht es also um eine URL und einen Parameter aus dem Query-Teil.
Nun, das kann man mit Stringmanipulation machen, muss man aber nicht. PHP bietet einige URL Functions an, unter anderem parse_url(). Damit lässt sich schon mal die URL in ihre Bestandteile zerlegen. Den Querystring-Teil kann man nun mittels parse_str() weiter zerlegen.
echo "$verabschiedung $name";
Hallo hande.
hab das jetzt erstmal so:
$sort = substr($_POST[sort],strpos($_POST[sort],"sort="),11);
Wo hast du die Konstante „sort“ deklariert?
Einen schönen Donnerstag noch.
Gruß, Mathias
die kommt aus javascript bzw.
aus einem Dropdownmenue, das bei Änderung automatisch die URL aufruft:
<option value='" . HTTP_PATH . "?site=" . $site . "&sort=" . $sort . "&sort_perpage=" . $sort_perpage . "'>
um den Usern mit abgeschaltetem javascript die Funktion zu verfügung zu stellen, gibt es neben dem Dropdownmenue einen Submitbutton: "GO"
, der mit:
<form action='" . HTTP_PATH . "?site=" . $_GET[site] . "&sort=" . $sort . "&sort_perpage=" . $sort_perpage . "' method='POST' name='formular_js'>"
die komplette URL wieder nach oben gibt.
und dann:
#--->habe das nun so gelöst:
if(isset($_POST[go])){
$sort = substr($_POST[sort],strpos($_POST[sort],"sort="));
$start = strpos($sort,"=");
$end = strpos($sort,"&");
$end = ($end-1) - $start;
$sort = substr($sort,1+$start,$end);
}
Gruß und danke allen
hande
Hallo hande.
hab das jetzt erstmal so:
$sort = substr($_POST[sort],strpos($_POST[sort],"sort="),11);Wo hast du die Konstante „sort“ deklariert?
Einen schönen Donnerstag noch.
Gruß, Mathias
Hallo hande.
if(isset($_POST[go])){
Und wo hast du nun die Konstante „go“ deklariert?
(Und da mein Wink mit dem Zaunpfahl offenbar nicht deutlich genug war, gibt es jetzt einen Betonpfeiler.)
Hallo hande.
Und bitte kein TOFU, danke.
Einen schönen Donnerstag noch.
Gruß, Mathias
Hallo Mathias,
danke für den Hinweis.
habs geändert in:
if(!empty($_POST['go']) || $_POST['go'] != ""){
...
}
besser so ?
das mit dem TOFU muß ich mir aber noch näher anschauen :(
Gruß hande
Hallo hande.
if(isset($_POST[go])){
Und wo hast du nun die Konstante „go“ deklariert?
(Und da mein Wink mit dem Zaunpfahl offenbar nicht deutlich genug war, gibt es jetzt einen Betonpfeiler.)
Hallo hande.
Und bitte kein TOFU, danke.
Einen schönen Donnerstag noch.
Gruß, Mathias
Hallo hande.
danke für den Hinweis.
habs geändert in:if(!empty($_POST['go']) || $_POST['go'] != ""){
Doppelt gemoppelt. Wenn $_POST['go'] nicht leer ist, gibt die erste Teilbedingung bereits „wahr“ zurück, die zweite wird nie aktiv. Ist es dagegen leer, ändert auch eine zweimalige Überprüfung nichts daran.
besser so ?
das mit dem TOFU muß ich mir aber noch näher anschauen :(
Ja, tu das bitte.
Einen schönen Donnerstag noch.
Gruß, Mathias