Zeichenkette

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeichenkette

    Hallo Leute,

    Ich möchte gerne eine Zeichenkette zerlegen.
    Eigendlich ganz einfach, dann auch wieder nicht.
    Das problem ist das der string nicht immer gleich ist.

    hier z.b. 5 beispiele wie der string ausschauen kann.

    st_name wert‌‌ // Komentar
    st_name ‌‌ wert ‌‌ // Komentar
    st_name "wert" ‌‌ // Komentar
    st_name "wert"
    // Komentar

    Ich möchte gerne st_name und wert in einer Variable haben.
    der wert kann auch in "" stehen.

    Alles Hinterm // soll ignoriert werden.
    oder zeilen die nur // haben!

    Ich habe schon geschaft den wert zu zerlegen aber wenn ich abstände
    zwischen "st_name" und "wert" änder ist wieder alles fürn Hund!!

    Es gibt bestimmt ne einfache Lösung aber ich komm nicht drauf!

    MfG HSFighter
    Zuletzt geändert von HSFighter; 16.02.2006, 21:00.

  • #2
    Re: Zeichenkette

    ist wieder alles fürn Hund!!
    hehe

    geh doch schritt für schritt vor. zuerst entfernst du eventuelle kommentare, dann zerlegst du den string.

    da du nicht alle bedingungen verraten hast, kann ich nicht konkreter werden ...

    str_replace
    preg_replace
    explode
    preg_split
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      wie wärs den damit:

      PHP-Code:

      $deinstring
      ='st_name "wert" // Komentar';

      $position=strpos($deinstring,'/');
      if(
      $position>1)
      {
      $string1=trim(substr($deinstring,0,$position));
      }
      else 
      {
      $string1=trim($deinstring);
      }

      $machearray=explode(' ',$string1);
      if(
      is_array($machearray))
      {
      foreach(
      $machearray as $values)
      {
           
               
                
      $array[]=trim($values);
          
      }


      }
      foreach(
      $array as $newvalues)
      {
          echo 
      $values."<br>";

      ungetestet, aber so müsste es gehen.......was du machst wenn nur // oder keine leerzeichen vorhanden sind überlasse ich deiner Phantasie
      Zuletzt geändert von newphp; 16.02.2006, 22:10.

      Kommentar


      • #4
        Hey Danke schön. Werde es mal testen.

        Habe auch mal ein bischen rum probiert:
        PHP-Code:
          if ($inhalt != ""){
            
        $inhalt_ohne_kommentar explode('//'$inhalt);
            
        $ausgabe explode(' '$inhalt_ohne_kommentar[0]);
            if (
        $ausgabe[1] != ""){
              echo 
        $ausgabe[0].'-->'.$ausgabe[1].'<br>';
            }
          } 
        Das Funktinoniert auch ganz gut.
        Nur habe ein Problem:

        Wenn der String folgender so ausschaut:

        'st_name "wert für das auslesen" // Komentar'

        dann wird leider auch ' "wert für das auslesen" ' auseinander geflügt.

        Wenn ich es jetzt so hin bekommen könnte das alles was zwischen "" steht vom explode befehl ausgenommen wird.
        dann habe es geschaft.

        Leider weiß ich nicht wie!!!

        MfG Andi

        Kommentar


        • #5
          du wirst wohl mit

          substr()

          den zweiten teil rausnehmen müssen, suche mit

          strpos() nach der position für " und lass dir ab da den reststring ausgeben

          ;-)

          Kommentar


          • #6
            Und wenn kein " drinsteht?
            PHP-Code:
            $x 'a     "b c  //a';
            $x ltrim($x);
            $inhalt current(explode('//'$x2));
            $inhalt preg_split('% +%'$inhalt2);
            print_r($inhalt); 
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Danke für die Schnelle Hilfe.
              Habe es jetzt endlich so wie es sein soll.

              $inhalt = Zeichenkette die zerlegt wird.

              PHP-Code:
              preg_match_all("/^([^\/\s]+)\s+(?:\"(.*)\")?(\d+)?/m"$inhalt$matchesPREG_SET_ORDER); 
              MfG HSFighter

              Kommentar


              • #8
                Ich würde zur Sicherheit mal noch den Modifikator U für ungreedy verwenden.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar

                Lädt...
                X