komplizierten string filtern und fetchen

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

  • komplizierten string filtern und fetchen

    hallo leute..!

    habe mal wieder ein probem: und zwar habe ich einen string, welcher zB so aussehen kann:

    Code:
    4-11248954124##142-1124110784###1998-1998410026#4212-2208745211#12-2158854125#####
    13-0214854111#18-1445145213##04-1111012548####78541-1965841112#411-1003218554#412-1235824599
    also immer [beliebig große zahl][-][10stellige Zahl][belige anzahl an #]...

    ich brächte das jetzt so:

    Code:
    array1[0] => [4]
    array1[1] => [142]
    array1[2] => [1998]
    array1[3] => [4212]
    array1[4] => [12]
    array1[5] => [13]
    array1[6] => [18]
    array1[7] => [04]
    array1[8] => [78541]
    array1[9] => [411]
    array1[10] => [412]
    
    array2[0] => [11248954124]
    array2[1] => [1124110784]
    array2[2] => [1998410026]
    array2[3] => [2208745211]
    array2[4] => [2158854125]
    array2[5] => [0214854111]
    array2[6] => [1445145213]
    array2[7] => [1111012548]
    array2[8] => [1965841112]
    array2[9] => [1003218554]
    array2[10] => [1235824599]
    wie macht man das..?!

    habe an so etwas gedacht, aber ich weiss nicht ob das funktiniert bzw. wie es performancemäßig aussieht:

    PHP-Code:

    $ary 
    preg_split("/#{1,}/"$string);

    for (
    $i=0;$i<count($ary)-1;$i++)
    {
        
    $ary2 preg_split("/-{1,}/"$ary[$i]);

    dann müsste jedes element mit ungeradem index die erste komponente und jedes element mit einem geraden index die zweite komponente ergeben..


    ist sicher nicht die beste idee..!- bitte helft mir..!- thx a lot im voraus..!


    lg, harry d.
    Zuletzt geändert von icon; 04.05.2004, 21:15.

  • #2
    hat wirklich keiner von euch eine idee, wie man das am besten macht..


    lg, harry

    Kommentar


    • #3
      Hilft dir dashier weiter?
      PHP-Code:
      $string="4-11248954124##142-1124110784###1998-1998410026#4212-2208745211#12-2158854125#####";
      preg_match_all('|([\\d]+)-([\\d]+)#+|',$string,$array);
      print_r($array); 
      Ausgabe:
      Code:
      Array
      (
          [0] => Array
              (
                  [0] => 4-11248954124##
                  [1] => 142-1124110784###
                  [2] => 1998-1998410026#
                  [3] => 4212-2208745211#
                  [4] => 12-2158854125#####
              )
      
          [1] => Array
              (
                  [0] => 4
                  [1] => 142
                  [2] => 1998
                  [3] => 4212
                  [4] => 12
              )
      
          [2] => Array
              (
                  [0] => 11248954124
                  [1] => 1124110784
                  [2] => 1998410026
                  [3] => 2208745211
                  [4] => 2158854125
              )
      
      )

      Kommentar


      • #4
        und ob mir das weiterhilft..!- vielen dank..!!!

        werde das code-schnippsel gleich einmal implementieren..



        lg, harry d.

        Kommentar


        • #5
          Original geschrieben von oppi

          preg_match_all('|([\\d]+)-([\\d]+)#+|',$string,$array);
          ich beschäftige mich zwar im moment mit regulären ausdrücken relativ intensiv aber irgendwie checke ich das trotzdem nicht ganz..!- kann mir das vielleicht einmal bei gelegenheit irgendwer erklären, dass ich es auch endlich checke, weil ich habe das auch zuerst so probiert, aber es hat einfach nicht geklappt..



          thx, lg and a gn8!- harry d.

          Kommentar


          • #6
            kann mir das vielleicht einmal bei gelegenheit irgendwer erklären,
            Code:
            '|([\d]+)-([\d]+)#+|'
            matched auf alle (preg_match_all) strings, welche aus mindestens einer (+) ziffer [/d], gefolgt von nem strich - , gefolgt von mindestens einer (+) ziffer [/d], gefolgt von mindestens einem # bestehen.
            die von dir gewollten, von oppi in () gesetzten teile lassen sich dann direkt aus den elementen 1 und 2 des ergebnis-arrays holen.

            got it?
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              da ich jetzt ein ähnliches problem habe und ich bei regulären ausdrücken wie es auschaut immer noch nicht so den durchblick habe stelle ich meine frage gleich in diesem veralteten thead:

              wie muss ich den ausdruck umbauen, wenn ich das gleiche problem habe wie damals, nur dass die erste folge vor dem "-" keine zahlen sondern ip-adressen sind

              also so aussieht:

              Code:
              [ip-adr.]-[10stellige Zahl][belige anzahl an #]
              als beispiel so:

              Code:
              10.155.32.12-11248954124##127.0.0.0-1124110784###12.32.32.244-1998410026#usw...

              bitte bitte helft mit..!- thx a lot!



              mfg.- harry d.

              Kommentar


              • #8
                habe es nun doch mit ein bisschen herumprobieren geschafft:

                PHP-Code:

                preg_match_all
                ('|([\d]{1,3}.[\d]{1,3}.[\d]{1,3}.[\d]{1,3})-([\d]+)#+|',$tmp['revoteinformations'],$riarray); 

                ist das ok so oder könnter man das leistungsmäßig noch ein bisschen optimieren..?!


                lg, harry d.

                Kommentar


                • #9
                  . würde ich durch \. ersetzen, bei der ip ...
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    habe ich gemacht..!- wäre nett, wenn du mir auch erklären könntest wieso..



                    lg, harry d.

                    Kommentar


                    • #11
                      [d]{1,3} besser so schreiben \d{1,3} weil alles was in eckigen klammern steht sind zeichen die drin vorkommen dürfen sprich z.B. nur die zeichen abCD dann schreibt man das halt in den eckigen klammern [abCD].

                      Und der Punkt steht für ein beliebiges Zeichen und wenn du es escapest ist es halt ein richtiger Punkt.

                      Kommentar

                      Lädt...
                      X