preg_split() regex

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

  • funkyflixx
    antwortet
    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!!!!

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    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.

    Einen Kommentar schreiben:


  • funkyflixx
    antwortet
    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
    Zuletzt geändert von funkyflixx; 24.06.2003, 17:03.

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    solange dein string so aussieht, wie die beiden beispiele,
    reicht auch ein explode() mit dem trennzeichen ";"

    Einen Kommentar schreiben:


  • funkyflixx
    antwortet
    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!

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    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>";
    }

    Einen Kommentar schreiben:


  • funkyflixx
    hat ein Thema erstellt preg_split() regex.

    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!
    Zuletzt geändert von funkyflixx; 24.06.2003, 15:34.
Lädt...
X