philippo: PHP Variabeln Problem

Hallo

ich habe folden String:

property=original;show=image;id=3456

(der String ist variabel)

Ist es möglich daraus folgende PHP Variabeln zu bekommen?

$property = 'original';
$show = 'image';

usw... Mien Problem ist, wie ich sozusagen Variabelnnamen ändern kann, um denen dann die Werte zuzuweisen (das letzter sollte das kleinere Problem darstellen) Gibt es dafür ne Lösung?

Gruß
Philp

  1. Hi philippo,

    property=original;show=image;id=3456

    Ist es möglich daraus folgende PHP Variabeln zu bekommen?

    Sofern die Informationen immer in der gleichen Reihenfolge vorliegen, sollte dir preg_match() helfen.

    Kann sich auch die Rehenfolge ändern, so müsste man mit preg_match_all() versuchen allgemein alle (\w+)=(\w*); herauszuziehen und dann auszulesen und nach dem ersten Teil als Key in ein Array zu schreiben oder so.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
    Das Motto des SELFForums ist das _self_made, also das selbermachen. Deshalb sollte man bevor man irgendetwas fragt, immer erst öffentliche Quellen zu Rate ziehen!
    1. hi,

      property=original;show=image;id=3456

      Ist es möglich daraus folgende PHP Variabeln zu bekommen?

      Sofern die Informationen immer in der gleichen Reihenfolge vorliegen, sollte dir preg_match() helfen.

      warum so hoch rangehen?

      erst mal am ; exploden, und dann in einer schleife darüber nochmal am = - dann kann man diese werte schön als key/value eines array-elementes nutzen.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hi wahsaga,

        warum so hoch rangehen?

        erst mal am ; exploden, und dann in einer schleife darüber nochmal am = - dann kann man diese werte schön als key/value eines array-elementes nutzen.

        Stimmt, das ist die schnellere Methode ;-)

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
        Schon gewusst, dass Bugs und Feature Vorschläge für das CForum ins Entwicklerforum oder in den BugTracker gehören und nicht hier her?
  2. Hallo!

    Ist es möglich daraus folgende PHP Variabeln zu bekommen?

    $property = 'original';
    $show = 'image';

    Ich würde die Variablen in ein Array packen:

    function print_var($v) {
    echo "<pre>";
    var_dump($v);
    echo "</pre>";
    }

    $string = "property=original;show=image;id=3456";
    $exp = explode(";", $string);
    if(is_array($exp)) {
    for($i = 0; $i < sizeof($exp); $i++) {
      $exp_var = explode("=", $exp[$i]);
      if(isset($exp_var[0]) AND isset($exp_var[1])) {
       $var[$exp_var[0]] = $exp_var[1];
      }
    }
    }

    print_var($var);

    Oder Du machst es über "Variable Variablen":

    $string = "property=original;show=image;id=3456";
    $exp = explode(";", $string);
    if(is_array($exp)) {
    for($i = 0; $i < sizeof($exp); $i++) {
      $exp_var = explode("=", $exp[$i]);
      if(isset($exp_var[0]) AND isset($exp_var[1])) {
       ${$exp_var[0]} = $exp_var[1];
      }
    }
    }

    echo $property . "<br>";
    echo $show . "<br>";
    echo $id . "<br>";

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Hi André,

      Wenn du jetzt noch den PHP Code mit

      [ code lang=php ]
      //Hier der Code
      [ /code ]

      (ohne Leerzeichen vor und nach den eckigen Klammern) auszeichnen würdest, wäre auch ich ganz zufrieden, weil ich den Code dann direkt gehighlighted angezeigt bekommen würde ;-)

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
      Probleme mit Formularen? http://tutorial.riehle-web.com hilft weiter.
      1. Hallo!

        Wenn du jetzt noch den PHP Code mit

        [ code lang=php ]
        //Hier der Code
        [ /code ]

        Ach das geht jetzt?

        (ohne Leerzeichen vor und nach den eckigen Klammern) auszeichnen würdest, wäre auch ich ganz zufrieden, weil ich den Code dann direkt gehighlighted angezeigt bekommen würde ;-)

        Ich kann nicht mehrere Wünsche auf einmal erfüllen... Aber spätestens wenn Du den Code in Dein Lieblinkseditor kopierst wird er bunt.

        MfG, André Laugks

        --
        L-Andre @ gmx.de
        1. Hi André,

          Ich kann nicht mehrere Wünsche auf einmal erfüllen... Aber spätestens wenn Du den Code in Dein Lieblinkseditor kopierst wird er bunt.

          Lieb_links_editor - ist das so eine Art Linksammlung? :-P

          MfG, Den*scnr*nis.

          --
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
          Den Selfcode kann man sich übrigends hier entschlüsseln lassen:
          http://www.peter.in-berlin.de/projekte/selfcode/
          1. Hallo!

            Lieb_links_editor - ist das so eine Art Linksammlung? :-P

            Achja, manchmal können meine Hände und Kopf nicht richtig zusammen arbeit! ;-)

            --> Lieblingseditor

            MfG, André Laugks

            --
            L-Andre @ gmx.de
      2. Hello,

        Wenn du jetzt noch den PHP Code mit

        [ code lang=php ]
        //Hier der Code
        [ /code ]

        (ohne Leerzeichen vor und nach den eckigen Klammern) auszeichnen würdest, wäre auch ich ganz zufrieden, weil ich den Code dann direkt gehighlighted angezeigt bekommen würde ;-)

        geht das nur bei Dir, oder ist es ein Forums-Feature?

        Könnten wir da nicht überhaupt mal eine "Online-Hilfe-Seite" gebrauchen, oder gibt es die schon?
        Aber bitte nur einen Klick entfernt *gg*

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi Tom, Hi André,

          [...Syntax-Highlighting...]

          geht das nur bei Dir, oder ist es ein Forums-Feature?

          Das geht bei jedem, du musst nur a) das Highlighting aktiviert haben und b) ein Stylesheet haben. Ich habe zur Zeit ein Inline Style Sheet drin:

          code[title=php] {
            background:#E9E9E9;
          }
          code[title=php] .variable {
            font-weight:bold;
            color:#000000;
          }
          code[title=php] .keyword {
            font-weight:bold;
            color:#0000ff;
          }
          code[title=php] .string {
            color:#008080;
          }
          code[title=php] .operator {
            color:#ff0000;
          }
          code[title=php] .comment {
            color:#008000;
          }
          code[title=php] .number {
            color:#008000;
          }
          code[title=html] {
            background:#ffffff;
            color:#000000;
          }
          code[title=html] .tag {
            color:#000080;
          }
          code[title=html] .name {
            color:#000080;
          }
          code[title=html] .attribute {
            color:#000080;
          } code[title=html] .value {
            color:#0000ff;
          }
          code[title=html] .comment {
            color:#808080;
          }

          Für PHP und HTML Code (Perl brauche ich nicht *g*) - funktioniert wegen dem [title=php] natürlich nicht im Internet Explorer, aber den nutze ich ja nicht :-P

          Könnten wir da nicht überhaupt mal eine "Online-Hilfe-Seite" gebrauchen, oder gibt es die schon?
          Aber bitte nur einen Klick entfernt *gg*

          Das sind z.Z. glaube ich noch mehr so "Insider Infos", so wie CK mir auch sagte, dass man den Live Filter auf RSS anwenden kann. ;-)

          Aber bitte, du kannst gerne anfangen zu tippen - es gab schon mal irgendwo einen Thread wo jemand geschrieben hat, was es alles für CSS Klassen gibt.

          MfG, Dennis.

          --
          Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
          That's life - Es gibt im Leben[tm] keine Zurück-Taste. (Fabian Transchel)
          1. Hallo Dennis,

            code[title=php] {
              background:#E9E9E9;
            }

            code.php { background:#E9E9E9; }
            reicht auch - die code-Elemente haben auch eine Klasse ...

            Für PHP und HTML Code (Perl brauche ich nicht *g*) - funktioniert wegen dem [title=php] natürlich nicht im Internet Explorer, aber den nutze ich ja nicht :-P

            ... womit es auch im IE funktioniert.

            Grüße aus Nürnberg
            Tobias

            1. Hi Tobias,

              code.php { background:#E9E9E9; }
              reicht auch - die code-Elemente haben auch eine Klasse ...

              Danke, wusste ich noch gar nicht - macht aber nichts, da ich das SelfForum eh nicht mit einem IE aufrufe ;-)

              MfG, Dennis.

              --
              Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
              Die Definition des SelfCodes ist hier zu finden, es gibt auch einen Encoder.
        2. Hallo Tom

          geht das nur bei Dir, oder ist es ein Forums-Feature?

          Tom, Du hast diesen Thread verpasst? Der war bis gestern oder vorgestern in der Forumshauptdatei. *g*
          Bitte auch einmal unten lesen. *fg*

          Könnten wir da nicht überhaupt mal eine "Online-Hilfe-Seite" gebrauchen, oder gibt es die schon?

          Zu den Klassen hat Candid Dauth eine Übersicht erstellt, für die Online-Hilfe hat Mathias Bigge ein <I>, das ich ihm aufdrücken wollte, mit einer guten Begründung abgelehnt.

          Freundliche Grüße

          Vinzenz

  3. Hello,

    ich habe folden String:

    property=original;show=image;id=3456

    (der String ist variabel)

    Ist es möglich daraus folgende PHP Variabeln zu bekommen?

    $property = 'original';
    $show     = 'image';

    $id       = '3456';

    Ja, das ist müsste recht einfach mit parse_str()
    http://de.php.net/manual/en/function.parse-str.php
    möglich sein.
    Da Du aber Semikolen anstelle von Kaufmannsunds zur Paramterseparation verwendest, musst Du ggf.

    ini_set('arg_separator.input','&;')

    vor dem Anwenden von parse_str() bemühen, und das hinterher wieder zurückstellen, falls das geht.

    Ich habe es noch nicht ausprobiert...

    Alternativ müsstest Du mit zwei verschachtelen explode() arbeiten.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. ini_set('arg_separator.input','&;')

      Das geht nicht, da das eine PHP_INI_PERDIR-Einstellung ist.

      Da diese Einstellung aber nicht weiter schädlich ist, kann man sie ja auch gleich in der php.ini oder "PERDIR" setzen.

      1. Hello,

        ini_set('arg_separator.input','&;')

        Das geht nicht, da das eine

        Das ist mir bekannt.
        Aber perdir kann ja auch in der .htaccess gemacht werden, falls der Provider das nicht rigoros oder verblödet unterbunden hat.

        PHP_INI_PERDIR-Einstellung ist.

        Da diese Einstellung aber nicht weiter schädlich ist, kann man sie ja auch gleich in der php.ini oder "PERDIR" setzen.

        Was passiert denn mit Semikolen bei urlencode()?
        Eine HTML-Entity sind ja wohl nicht, was dann (bei dauerhafter Nutzug) ggf. Komplikationen mit Datenwerten geben könnte.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. ini_set('arg_separator.input','&;')

          Das geht nicht, da das eine PHP_INI_PERDIR-Einstellung ist.

          Das ist mir bekannt.

          Warum schreibst du das dann hin? PHP_INI_PERDIR bedeutet, dass es _nicht_ mit ini_set() geht.

          Aber perdir kann ja auch in der .htaccess gemacht werden, falls der Provider das nicht rigoros oder verblödet unterbunden hat.

          Deswegen schrieb ich ja:

          Da diese Einstellung aber nicht weiter schädlich ist, kann man sie ja auch gleich in der php.ini oder "PERDIR" setzen.

          Was passiert denn mit Semikolen bei urlencode()?

          Das wird zu %3B.

          Eine HTML-Entity sind ja wohl nicht, was dann (bei dauerhafter Nutzug) ggf. Komplikationen mit Datenwerten geben könnte.

          HTML-Entities werden vom Browser aufgelöst. Von &amp; bekommt der Server nur ein & zu sehen.

          1. Hello,

            ini_set('arg_separator.input','&;')

            Das geht nicht, da das eine PHP_INI_PERDIR-Einstellung ist.

            Das ist mir bekannt.

            Warum schreibst du das dann hin? PHP_INI_PERDIR bedeutet, dass es _nicht_ mit ini_set() geht.

            <leise>entschuldigung</leise>

            Das wird zu %3B.

            Dann müsste also %3B von parse_str() aufgelöst werden, wenn es genauso wie bei der Generierung der Arrays $_GET, $_POST & Co. arbeitet. Habe im Moment keinen Server zum Testen, kann das also nur raten. Wenn es so ist, dürfte es tatsächlich nicht schädlich sein, und man könnte es dauerhaft zusäzlich zum & einschalten.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. <leise>entschuldigung</leise>

              Angenommen. Ich sag's auch nicht weiter :-)

              Das wird zu %3B.

              Dann müsste also %3B von parse_str() aufgelöst werden, wenn es genauso wie bei der Generierung der Arrays $_GET, $_POST & Co. arbeitet.

              parse_str('foo="%3B";bar=%26&baz=42');

              erzeugt mit print_r($GLOBALS) u.a.

              [foo] => ";"
                [bar] => &
                [baz] => 42

              wenn &; für arg_separator.input in "php.ini, .htaccess or httpd.conf" gesetzt wird.

              Wenn es so ist, dürfte es tatsächlich nicht schädlich sein, und man könnte es dauerhaft zusäzlich zum & einschalten.

              Sag ich doch schon immer :-)