preg_split() regex

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

  • preg_split() regex

    Hallo,
    ich moechte einen string in ein array verwandeln, dabei moechte ich das bei jedem ; mit einer zahl dahinter ein neues arrayelement anfeangt.
    waere es dann auch noch moeglich das in den arrayelementen noch die zahl enthalten ist die hinter dem ; steht (also das teile des trennoperators gleichzeitig arrayelement werden)?

    prog:
    ------------------------------------------
    $str ="1'abc';2'def';3'ghi';4'jkl';5'mno';

    $testarray = preg_split("bekomm ich nicht hin hier!",$str);

    foreach($testarray as $i)
    {
    echo "i: ".$i."<BR>";
    }
    -----------------------------------------
    so das die ausgabe dann

    i: 1'abc'
    i: 2'def'
    i: 3'ghi'
    i: 4'jkl'
    i: 5'mno'

    waere. ich hab es mit ";([1-7]){1}" und aehnlichem versucht und es leider nicht hinbekommen!

    Danke.

    Ps: es ist wichtig das der trennparamenter ; mit ner zahl dahinter ist und nicht nur ; alleine!
    Last edited by funkyflixx; 24-06-2003, 15:34.

  • #2
    wie wärs damit:
    Code:
    $str ="1'abc';2'def';3'ghi';4'jkl';5'mno'";
    $testarray = preg_split("#;([1-7]{1})#",$str);
    
    for($i=0;$i<count($testarray);$i++)
    {
    echo "i: ".$i." ".$testarray[$i]."<BR>";
    }
    Kissolino.com

    Comment


    • #3
      naja,
      leider ist mein string schon ein bischen variable
      sollte also fuer
      z.B:
      --------------------------
      $str ="1'abc';4'jkl';5'mno'";
      mit ergebnis:

      i:1'abc'
      i:4'jkl'
      i:5'mno'
      ----------------------------
      auch funktionieren......
      geht aber so nicht!
      danke trotzdem fuer deine bemuehnungen!

      Comment


      • #4
        solange dein string so aussieht, wie die beiden beispiele,
        reicht auch ein explode() mit dem trennzeichen ";"
        Kissolino.com

        Comment


        • #5
          ABER SIE SEHEN NICHT IMMER SO AUS!


          sorry, aber stellt euch einfach vor das

          $str = "1'"a'aaa;aa';2'bbb;b;b';5'c;ccc'"

          und dann koenne a,b,c noch sonst welche sondzezeichen sein,und die ausgabe soll immer noch:


          i: 1'"a'aaa;aa'
          i: 2'bbb;b;b'
          i: 5'c;ccc'

          sein.

          darum brauch ich ja die regex!!!!!
          das einzige was in diesen sonderzeichen und sonst welche nicht einhalten ist (als regex ausgedrueckt): ";([1-7])" oder "#;([1-7]{1})#" oder wie man das sonst noch darstellen kann!

          danke fuer antworten
          Last edited by funkyflixx; 24-06-2003, 17:03.

          Comment


          • #6
            vielleicht versteh ich das problem wirklich nicht so richtig
            aber noch brauchst du keine regex:
            Code:
            $str ="1'abc';7'def';3'ghi';4'jkl';5'mno'";
            $str ="1'abc';4'jkl';5'mno'";
            $str = "1'\"a'aaa;aa';2'bbb;b;b';5'c;ccc'";
            $testarray = explode("';",$str);
            
            for($i=0;$i<count($testarray);$i++)
            {
            if($i == count($testarray)-1)
            {
            echo $i.": ".$testarray[$i]."<BR>";
            }
            else
            {
            echo $i.": ".$testarray[$i]."'<BR>";
            }
            }
            kommentier die einzelnen $str aus und probiers.
            Kissolino.com

            Comment


            • #7
              nicht schlecht!
              nur leider ist das mit der stringflexibilitaet sogar so weit...

              $str = "1;2'dfd','sdf';sd';3;4'felix'"

              ich hab jetzt aber mitlerweile eine eigene (leider sehr komplizierte loesung)

              ----------------------------------------
              $article_array = preg_split("(;[1-7])",$article_str);
              preg_match_all("(;[1-7])",$article_str,$matches,PREG_OFFSET_CAPTURE);

              for($i=1;$i<count($article_array);$i++)
              {
              if(strlen($article_array[$i])==0)
              {
              $article_array[$i] = substr($matches[0][$i-1],1);
              }
              else
              {
              $pos = strpos($article_str,$article_array[$i]);
              $article_array[$i] = substr($article_str,$pos-1,1).$article_arra[$i];
              }
              }
              ----------------------------------------

              wer lust hat kann sich es mal reinziehen, wer nicht verpasst auch nichts grosses (ist eher ein gewurschtel glaub ich)

              danke an alle fuer ihren rat!
              wer jedoch noch konkret eine regex auf lager hat mit der man das problem dann in einer zeile loesen kann: her damit!!!!

              Comment

              Working...
              X