WauWau: String, der wie Query-String aussieht, splitten...

Hallo,

also, ich habe einen String:

$s = "ersteeigenschaft=ersterwert&zweiteeigenschaft=zweiterwert&dritteeigenschaft=dritterwert......";

und so weiter halt. Es sieht also so aus, wie ein ganz normaler Query-String.

Meine Frage: Wie bekomme ich ihn so hin, dass man auf einzelne "Eigenschaften" bzw. "Felder" so wie vergleichbarerweise auf $_GET zugreifen kann? Also ich hätte gerne ein Array, bei dem ich auf das oben angewandte beispiel folgendes bekommen würde:

array
{
  "ersteeigenschaft" => "ersterwert",
  "zweiteeigenschaft" => "zweiterwert",
  "dritteigenschaft" => "dritterwert",
  ...
}

Ich bekomme mit split(...); nur ein multidimensionales Array hin, dass etwa so aussieht:

array
{
   [0] => array
          {
             [0] => "ersteeigenschaft",
             [1] => "ersterwert"
          }
   [1] => array
          {
             [0] => "zweiteeigenschaft",
             [1] => "zweiterwert"
          }
   ...
}

Und auch wenn ich meinen String per Regular Expressions "herausfiltern" würde, komme ich auf keinen geraden ast (ich brauche eigentlich nur die Werte, nicht die "Bezeichnungen").

Wer weiß rat?

WauWau

--
Wau - hier ist mein Selfcode:
ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
[mein alter sah optisch irgendwie besser aus ;-)]
  1. hi,

    $s = "ersteeigenschaft=ersterwert&zweiteeigenschaft=zweiterwert&dritteeigenschaft=dritterwert......";

    Meine Frage: Wie bekomme ich ihn so hin, dass man auf einzelne "Eigenschaften" bzw. "Felder" so wie vergleichbarerweise auf $_GET zugreifen kann?

    ich würde explode() nehmen.
    zuerst am & auftrennen, ergibt ein array mit "ersteeigenschaft=ersterwert", "zweiteeigenschaft=zweiterwert" und "dritteeigenschaft=dritterwert".

    diese werte dann einzeln nochmal am = auftrennen, ergibt weitere (unter-)arrays mit den zwei werten "parameter" und "wert".
    diese kannst du dann ja als schlüssel und wert für ein weiteres assoziatives array verwenden.

    gruss,
    wahsaga

  2. Hallo du da draußen,

    Ich bekomme mit split(...); nur ein multidimensionales Array hin

    Naja, und wieso bearbeitest du das nicht so, dass du dein Array hast? Zum Beispiel so:

    $richtiges_array = array();
    foreach($multidimensionales_array as $array_wert)
    {
      $richtiges_array[$array_wert[0]] = $array_wert[1];
    }

    Dann hast du dein $richtiges_array :-)

    Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
    Candid Dauth (Dogfish)

    --
    Selten Dumme sind nicht selten, aber dumm.
    http://dogfish.net.tc/
    1. Hi,

      Naja, und wieso bearbeitest du das nicht so, dass du dein Array hast? Zum Beispiel so:

      ja klar, ich dachte nur an was besseres, also ich habe eben keine Lust, 10 Zeilen array-bearbeitung zu machen, die dann bei jedem seitenaufruf durchgegangen wird, nur weil ein klitzekleines bisschen gebraucht wird.

      Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),

      Hmm - grüße von hier drinnen: http://www.kelkheim.de - seite ist total hässlich, ich weiß.

      WauWau

      PS: http://dogfish.net.tc/ - du schreibst, du willst dich später mal mit webseitengestaltung beschäftigen: Dann schau dir mal die ganzen Informatikstudenten draußen auf der Straße an - die kriegen alle keinen job - und ob es freiberuflich das wahre ist, weiß ich ja nicht... - ich meine, ich find's auch ganz toll, aber scheinbar finden alle, die es machen toll, ob man's gleich später als beruf macht, ist was anderes ...

      --
      Wau - hier ist mein Selfcode:
      ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
      [mein alter sah optisch irgendwie besser aus ;-)]
  3. Hi,

    Ok, ich habe es nun auf die explode()-Technik gemacht [in meinem posting habe ich aus versehen split() mit explode() verwechselt]:

    $s = "design=modern&fontsize=medium&search=expandable&ad=hidden&tip=visible";

    $settings = text2settings($s);;

    function text2settings($str)
      {
        /* $str zu vollaufgelöstem array hinbiegen */
        $s1 = explode("&", $str);
        foreach($s1 as $i => $v)
          $s1[$i] = explode("=", $v);
        /* $str zu richtigem so-wie-es-sein-soll array hinbekommen*/
        $s2 = array();
        foreach($s1 as $v)
          $s2[$v[0]] = $v[1];
        return $s2;
      }

    print_r($settings);

    Wobei $s hierbei ein beispielstring ist. Ist zwar nicht "so optimiert" wie ich es gerne hätte, aber ganz nett.

    WauWau

    --
    Wau - hier ist mein Selfcode:
    ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
    [mein alter sah optisch irgendwie besser aus ;-)]
    1. Moin!

      Die bessere, weil performantere Lösung (ab PHP Version 4.0.3) ist:

      $s = "design=modern&fontsize=medium&search=expandable&ad=hidden&tip=visible";
      parse_str($s,$s2)

      -> in $s2 stehen die Parameter wie gewünscht drin.

      Wahlweise kann man das natürlich auch noch in einer Funktion kapseln:

      function text2settings (&$s)
      {
        $array = array();
        parse_str($s,$array);
        return $array;
      }

      Ein Hoch auf die, die sich mit der Vielfalt der PHP-Funktionen auskennen. Lesen (des Handbuches) bildet!

      :)))

      - Sven Rautenberg

      --
      "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
      1. Hi,

        parse_str($s,$s2)

        genau ____diese____ Funktion habe ich gesucht! Danke - dann brauche ich meine megaumständliche funktion nämlich nicht!

        Wahlweise kann man das natürlich auch noch in einer Funktion kapseln:

        diesen umstand brauche ich dann natürlich nicht - PHP stellt mir ja dafür bereits eine funktion bereit :-)

        Ein Hoch auf die, die sich mit der Vielfalt der PHP-Funktionen auskennen. Lesen (des Handbuches) bildet!

        Ja, ein hoch ;-) Ob du's mir glaubst oder nicht, ich habe alle möglichen array-funktionen durchgesucht, und nix gefunden ;-/

        WauWau

        --
        Wau - hier ist mein Selfcode:
        ss:) zu:) ls:< fo:~ de:] va:) ch:° n4:# rl:( br:< js:| ie:% fl:| mo:|
        [mein alter sah optisch irgendwie besser aus ;-)]