Zeichenkette

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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

    Comment


    • #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
      Last edited by newphp; 16-02-2006, 22:10.

      Comment


      • #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

        Comment


        • #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

          ;-)

          Comment


          • #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...

            Comment


            • #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

              Comment


              • #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)

                Comment

                Working...
                X