[REGEX] preg_match_all: ??.?? Euro

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

  • [REGEX] preg_match_all: ??.?? Euro

    Hallo!

    Ich habe viele Include-Seiten, welche ich immer einlese und dann ausgebe.
    Nun steht dort öfters ein Betrag, wie z.B. 21.73 Euro, 84.99 Euro oder 119.99 Euro.

    Dies soll aber immer in ein <span> gesetzt werden, wie folgt also insgesamt so ausschauen:
    Code:
    <span onclick="speichere('[i]SUMME[/i]');">[i]SUMME[/i] Euro</span>
    Wie ist das möglich mit preg_match_all oder ähnliches Funktionen?
    Kann mir da evtl. jemand helfen?
    Mit freundlichem Gruß,
    Deathrow

  • #2
    PHP-Code:
    <?php
    $zeichenkette 
    'Ich biete dir jetzt 21.99 Euro für 17 Stunden bräunen!';
    $suchmuster '/(\\d+).(\\d+) Euro/';
    $ersetzung '<span onmouseover="speichere (\'$1.$2\');>$1.$2 Euro</span>';
    echo 
    preg_replace($suchmuster$ersetzung$zeichenkette);
    ?>
    Ich habe jetzt bereits das. Aber wie kann ich es machen, dass auch volle Euro-Summen gehen und welche mit 2 Nachkommastellen?
    Mit freundlichem Gruß,
    Deathrow

    Kommentar


    • #3
      Du musst den Punkt und das, was danach kommt, optional machen. Das geht mit nem ?.

      PHP-Code:
      $suchmuster '/(\\d+)(?:\\.(\\d{2}))? Euro/'
      Was ich noch geändert habe, ist, dass bei den Nachkommastellen genau 2 (wie von dir angegeben) Zahlen erlaubt sind; nicht wie bei dir min. 1 und max. beliebig viele.
      Zuletzt geändert von Shurakai; 27.02.2007, 22:44.
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        PHP-Code:
        <?php
        $zeichenkette 
        'Ich biete dir jetzt 21.99 Euro für 17 Stunden bräunen. Und 1 Stunde kostet 5 Euro!';
        $suchmuster '/(\d+)(?:.(d{2}))? Euro/';
        $ersetzung '<span onmouseover="speichere (\'$1$2\');>$1$2 Euro</span>';
        echo 
        preg_replace($suchmuster$ersetzung$zeichenkette);
        ?>
        Aber das gibt jetzt Ich biete dir jetzt 21.5 Euro! aus, wieso?
        Mit freundlichem Gruß,
        Deathrow

        Kommentar


        • #5
          Sorry, ich hatte vergessen, dass das Forum die \ verschluckt. Hab meinen Post oben mal angepasst - kopier dir mal daraus den Ausdruck.


          http://regexp-evaluator.de/evaluator...18dd/#ergebnis


          Sieht für mich auf jedenfall ok aus
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            PHP-Code:
            <?PHP
              
            //
              // Text, der durchsucht werden soll
              //
              
            $subject 'Ich biete dir jetzt 21.99 Euro für 17 Stunden bräunen. Und 1 Stunde kostet 5 Euro!';
              
            //
              // Der Reguläre Ausdruck
              //
              
            $pattern '#(\d+)(?:\.(\d{2}))? Euro#isU';
              
            //
              // RegExp auswerten
              //
              
            $result preg_match_all($pattern$subject$subpattern);
              
            //
              // Ergebnis ausgeben
              //
              
            echo '<p>Der verwendete Reguläre Ausdruck trifft auf den zu durchsuchenden Text '.
                   ((
            $result) ? $result.' mal ' 'nicht ').'zu.</p>';
              
            //
              // Unterausdrücke ausgeben
              //
              
            foreach ($subpattern[0] AS $key => $value) {
                
            $subject str_replace ($value'<a href="'.$value.'">'.$value.'</a>'$subject);
              }

              echo 
            $subject;
              echo 
            '<pre>'.print_r($subpatternTRUE).'</pre>';
            ?>
            ich hab's geschafft ;-)
            Zuletzt geändert von Deathrow; 27.02.2007, 23:53.
            Mit freundlichem Gruß,
            Deathrow

            Kommentar

            Lädt...
            X