Problem mit regulärem Ausdruck

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

  • Problem mit regulärem Ausdruck

    ich bin am verzweifeln...


    ich habe folgenden string und möchte daraus eine nur 5 stellige zahl, die zwischen 10000 und 99999 liegt extrahieren.

    PHP Code:


    $str    
    =    'Hier ist ein Text und diese Zahl 12345 will ich aber nichts aus dieser 33444556';
    $exp    =    '/^(\D{1}.*)?([1-6][0-9]{4})(\D{1}.*)?$/';

    preg_match($exp$str$replace);

    print_r($replace); 
    das funktioniert, wenn nur eine zahl im string steht, wenn aber eine weitere, auch längere drin steht kommt nur quark bei raus.

    ich hab schon so viel dran rumgeschraubt...

    bitte um hilfe!
    fragen macht spass, denken nicht

  • #2
    Probiers mal so
    PHP Code:
    preg_match('/\\b\\d{5}\\b/',$str,$replace); 
    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


    • #3
      AHHH! danke!!!


      das hatte ich doch auch schon.... ich versteh's nicht, was ich da falsch gemacht hatte.

      und wenn ich's so mach, dann hab ich auch noch den bereich von 10000 - 69999
      sorry, hatte ich vorher falsch beschrieben.



      PHP Code:
      preg_match('/\b[1-6][0-9]{4}\b/',$str,$replace); 
      aber was mach ich wenn jemand:



      PHP Code:
      $str    =    'sowas23244 schreibt?'
      also die zahl zusammen mit den buchstaben dort steht,

      krieg ich das auch irgendwie raus?
      fragen macht spass, denken nicht

      Comment


      • #4
        Ein \b steht für eine Wortgrenze. Ein \B steht für keine Wortgrenze. An diesen kannst du drehen um das gewünschte Resultat zu erhalten.

        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


        • #5
          Re: Problem mit regulärem Ausdruck

          hm... ich würde sagen
          /(?<![0-9])[1-9][0-9]{4}(?![0-9])/

          oder so in der Art *gerade keine Lust hat seinen Webserver anzuwerfen*


          oder um den von jahlives aufzugreifen
          /(\b|^)\d{5}(\b|$)/
          ich schätze mal einfach, dass man Anfang und Ende extra behandeln muss

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Comment


          • #6
            alles klar, dann probier ich's noch mal!

            danke jedenfalls, dass ihr mir geholfen habt!
            fragen macht spass, denken nicht

            Comment

            Working...
            X