komplizierten string filtern und fetchen

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

  • 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.
    Last edited by icon; 04-05-2004, 20:15.

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


    lg, harry

    Comment


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

      Comment


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

        werde das code-schnippsel gleich einmal implementieren..



        lg, harry d.

        Comment


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

          Comment


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

            Comment


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

              Comment


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

                Comment


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

                  Comment


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



                    lg, harry d.

                    Comment


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

                      Comment

                      Working...
                      X