ewiges regex Problem

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

  • ewiges regex Problem

    Hi @ all,
    ich habe folgende Gundlage:
    5,5 x 17 cm
    5 x 17,5 cm
    5,5 x 17,5 cm
    5 x 17 cm
    also: \d{1,2]%evtl komma%\d{1,2} x \d{1,2}%evtl komma%\d{1,2} cm

    Also bräuchte ich doch etwas wie * x * cm.
    Wie funktioniert das für php, ich musste das bisher noch nie machen, aber bräuchte das recht dringend. Wäre echt genial, wenn mir jemand die Lösung zelebrieren könnte.

    Besten Dank euch

  • #2
    Code:
    (\d+|\d+\,\d+)( |)(cm| )( |)x( |)(\d+|\d+,\d+)( |)(cm| )( |)

    Mal eben aus dem Stehgreif:

    Müsste eigentlich alle von gelisteten Strings matchen. auch zbs. "$ cm x $ cm"

    Wenn du nur "$ x $ cm" validieren möchtest reicht folgendes:

    Code:
    (\d+|\d+\,\d+)( |)x( |)(\d+|\d+,\d+)( |)(cm| )

    Erklärung:

    (d\+|d+\,\d+) = (if|or) - Entweder nur \d+ oder \d+,\d+
    Zuletzt geändert von Skaschy; 04.01.2011, 17:16.

    Kommentar


    • #3
      Was soll denn "( |)" sein? Ein optionales Leerzeichen?

      Kommentar


      • #4
        PHP-Code:
        function parse_numbers($text) {
            return 
        sscanf(str_replace(',''.'$text), '%f x %f cm');
        }


        print_r(parse_numbers('5,5 x 17 cm'));
        // Array
        // (
        //     [0] => 5.5
        //     [1] => 17
        // )

        print_r(parse_numbers('5 x 17,5 cm'));
        // Array
        // (
        //     [0] => 5
        //     [1] => 17.5
        // )

        print_r(parse_numbers('5,5 x 17,5 cm'));
        // Array
        // (
        //     [0] => 5.5
        //     [1] => 17.5
        // )

        print_r(parse_numbers('5 x 17 cm'));
        // Array
        // (
        //     [0] => 5
        //     [1] => 17
        // ) 

        Kommentar


        • #5
          Zitat von onemorenerd Beitrag anzeigen
          Was soll denn "( |)" sein? Ein optionales Leerzeichen?
          Ja, das sollte es eigentlich sein.

          Kommentar


          • #6
            Dafür wäre " ?" oder "\s?" besser geeignet.

            Kommentar


            • #7
              schonmal vielen Dank euch
              Leider funktioniert es noch nicht so, aber ich bin ja jetzt auf der richtigen Spur. Problem ist nur noch, dass vor dem Format noch ein div. langer Text steht. Aber das sollte doch eigentlich nichts aus machen, oder?

              Kommentar


              • #8
                Der RegExp-Evaluator - RegExp-Evaluator - Ergebnis

                Kommentar


                • #9
                  Cool, ich werde es ausprobieren und Feedback geben.
                  Euch schonmal vielen Dank

                  Kommentar


                  • #10
                    Zitat von onemorenerd Beitrag anzeigen
                    Dafür wäre " ?" oder "\s?" besser geeignet.

                    Danke für den Tipp!

                    Kommentar


                    • #11
                      es funktioniert wunderbar
                      Besten Dank nochmal

                      Kommentar

                      Lädt...
                      X