aus Array String erzeugen
dit
- php
0 Cheatah0 Sönke Tesch0 dit
0 romy0 dit
Hallo,
ich würde gerne wissen wie das angehe und zwar möchte ich mit dieser fonction dieses Ergebniss erhalten:
index.html/1/2/3/
$var= array("1","2","3");
$start = "index.html/";
for ($i = 0;$i < count($var) ;$i++){
$var[$i];
echo"/";
}
echo $start.$var[$i];
wie mach ich das?
Das ich das array in eine Einzelteile zerlege so das ich das Ergebniss (/1/2/3) erhale?
Hi,
wie mach ich das?
die in beinahe allen Hochsprachen bekannte Funktion join() hat in PHP zusätzlich(!) ein Alias implode(). Siehe Doku.
Cheatah
ich würde gerne wissen wie das angehe und zwar möchte ich mit dieser fonction dieses Ergebniss erhalten:
index.html/1/2/3/
$var= array("1","2","3");
$start = "index.html/";
Wirf doch bitte erstmal einen Blick in die PHP-Anleitung, Kapitel "Strings functions" (http://www.php.net/manual/en/ref.strings.php). Du wirst dort über zwei Funktionen stolpern, die mit ziemlicher Sicherheit genau das machen, was Du haben willst.
Gruß,
soenk.e
PS: Dein Ansatz "zu Fuß" ist auch vielversprechend. Du mußt in der Schleife lediglich die beiden Teile (aktueller Feldeintrag und Schrägstrich) zusammenfügen bzw. an das Ergebnis anhängen.
Hallo Sönke,
ich hab´s. Das was ich eigendlich machen wollte ist folgentes:
test.php?name=&1=&2=&3=
die vars die ich dynamisch erzeuge, sollen dan die URL angehangen werden. So das der User, wenn er das Fomular ausfüllt die vorher eingegeben Daten nicht noch mal eintippen muß.
Ich lese daten über eine mysql aus wo der user ein Datum an geben soll z.B. 02.04 diese Datumsfelder sind Mußfelder, sollte der User eines nicht ausfüllen, wird die mail nicht weitergeleitet sondern springt zum Formular zurück so das die eingegeben Felder gehalten werden. Jetzt hab ich nurnoch ein Problem.
Bei der if abfrage, das vorher erzeugte array
Wie soll ich das definieren?
if( !$user || !$arr ) {
oder
if( !$user || !$arr{!$x} ) {
oder
if( !$user || !($arr{$x} ) ) {
geht nicht!
nehmen wir an ich habe 3 Eigabefelder 1)$user 2)$arr[$x] 3)$arr[$x]
sobald die var 1)$user und 2)$arr oder 2)$arr gesetzt wurde wird gesendet. Soll aber n i c h t erst wenn a l l e ausgefüllt sind soll gesendet werden.
wat soll ich machen :(
Gurß dit
test.php?name=&1=&2=&3=
die vars die ich dynamisch erzeuge, sollen dan die URL angehangen werden. So das der User, wenn er das Fomular ausfüllt die vorher eingegeben Daten nicht noch mal eintippen muß.
diese Datumsfelder sind Mußfelder, sollte der User eines nicht ausfüllen, wird die mail nicht weitergeleitet sondern springt zum Formular zurück so das die eingegeben Felder gehalten werden. Jetzt hab ich nurnoch ein Problem.
Tipp: Benutze keine extra Formular-absende-Seite, sondern baue die Absende-Funktion in die Formularseite ein. Wird die Formularseite ohne $_POST[] (bzw. bei alten PHP-Versionen $HTTP_POST_VARS[]) aufgerufen, gibst Du das Formular aus; ist $_POST[] vorhanden, verschickst Du die Daten oder gibst das Formular nochmals aus, falls etwas fehlt. Damit sparst Du eine Datei, eine hässliche URL und einmal Neuladen einer Seite (falls was fehlt).
Bei der if abfrage, das vorher erzeugte array
Wie soll ich das definieren?
if( !$user || !$arr ) {
oder
if( !$user || !$arr{!$x} ) {
oder
if( !$user || !($arr{$x} ) ) {geht nicht!
Bin mir nicht so ganz sicher, was Du da genau vor hat, aber ganz allgemein wirst Du schon alle nötigen Einträge des Feldes einzeln prüfen müssen, schon alleine, um niemandem auf den Leim zu gehen. Lass' Dir notfalls den Inhalt eines Feldes per
echo "<pre>";
print_r($array);
echo "</pre>";
ausgeben, um Klarheit zu erlangen.
Davon unabhängig solltest Du in PHP beim Zugriff auf Variablen, die von "außen" stammen (Formular, URL, Cookie, Server, Session) grundsätzlich über die dafür vorgesehenen Felder $_POST, $_GET, $_COOKIE, $_SERVER und $_SESSION gehen, anstatt die Variablen direkt anzusprechen.
Das Problem ist, daß Du beim direkten Zugriff über beispielsweise $name aus obiger URL nicht feststellen kannst, ob diese Variable tatsächlich aus der URL stammt oder aus einem anderen der genannten Bereiche. Und da das (genauer: der umgekehrte Fall) in der Vergangenheit zu Sicherheitslücken geführt hat, tauchen diese Parameter seit PHP 4.1 auch nicht mehr standardmäßig als Variable auf, sondern nur noch in den genannten Feldern.
Du wirst sie also aller Wahrscheinlichkeit nach früher oder später sowieso benutzen müssen (sobald sich mal jemand um Deine Uralt-PHP-Installation kümmert;).
Infos über diese Felder erhältst Du per
phpinfo(INFO_VARIABLES);
Gruß,
soenk.e
Hi,
index.html/1/2/3/
$var= array("1","2","3");
$var_string = implode("/",$var);
//$var_string sollte jetzt 1/2/3 sein
$gesamt = "index.html/".$var_string."/";
implode setzt aus einem array einen String zusammen mit dem angegebenen Trennzeichen.
ciao
romy
Danke für eure Antworten.
gruß dit