[PHP] preg_replace problem

Dieses Thema im Forum "Webentwicklung" wurde erstellt von encud, 11. Dezember 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 11. Dezember 2008
    preg_replace problem

    Hallo zusammen!

    Ich habe jetzt schon 2 stunden verschenkt und komme einfach nicht auf die lösung:-/

    Ich habe in einem string sachen wie "(+ 10,00€)" oder "(+ 1.000,00€)". die zahl ist immer unterschiedlich und bei 4 stelligen kommt ein punkt drin vor, bei 7 stelligen 2 punkte usw.

    jetzt will ich immer wenn sowas da steht vor das ganze "<span>" und dahinter dementsprechend "</span>" schreiben.

    Ich habs einfach mal für ne 2 stellige zahl versucht um micht nicht gleich zu überfordern, habs aber trotzdem geschafft mein kopf dampft^^

    folgendes habe ich probiert:
    PHP:
    <? php

    $content 
    '(+ 10,00&euro;)' ;

    $content  preg_replace ( '/([(+[:space:]])(\d+),(\d{2})([&euro;)])/' '<span>${1}${2},${3}${4}</span>' $content );

    echo 
    $content ;

    ?>
    Was zum teufel mache ich falsch?! ich komm mit diesen regilären ausdrücken einfach nicht klar

    hoffe mir kann da wer abhilfe schaffen

    gruß encud

    edti: hab eben gerade noch gemerkt das da ein leerzeichen drin war was iwie gestört hat, jetzt schreibt er immerhin schonmal
    HTML:
    (+<span> 10,00&</span>euro;)
    aber warum nicht so wie ich will?
     
  2. 11. Dezember 2008
    AW: preg_replace problem

    weil "+" und "()" escaped werden müssen. zudem steht [] für "eines dieser zeichen an dieser stelle" du suchst denk ich "(? " denn das steht für "dieser ausdruck an dieser stelle"

    regex:
    Code:
    /(\((?:\+\s\d+(?:(?:\.|,)\d{2})?\s*(?:&euro;))\))/
    replace:
    Code:
    <span>$1</span>
    sollte hinhauen^^
     
  3. 12. Dezember 2008
    AW: preg_replace problem

    So neben am rande (bevor ich dafür extra nen neuen thread aufmache).. Ich arbeite schon jahrelang mit PHP aber ich kann mich einfach nicht überwinden mich in diese ganzen ausdrücke rein zu arbeiten oO gibts da irgendwie eine eselsbrücke oder so um sich zu merken was was macht?
     
  4. 12. Dezember 2008
    AW: preg_replace problem

    oha, schonmal ganz großes danke, da wäre ich im leben nicht drauf gekommen!
    für (+ 10,00€) funktioniert es jetzt, leider nur noch nicht wenn die Zahl einen punkt hat z.B. (+ 1.000,00€). haste da noch ne ahnung wie man das machen könnte?

    genau das problem habe ich auch(nur das ich noch nicht ganz so lange code^^) und vorallem immer wenn ichs versuche scheitere ich(wie hier) würde mich auch über sowas freun, oder ieine seite wo man mehr als bahnhof versteht^^
     
  5. 13. Dezember 2008
    AW: preg_replace problem

    liegt ja eigentlich auf der hand:
    Code:
    /(\((?:\+\s\d+(?:\.\d{2,3}(?:,\d{2})?)?\s*(?:&euro;))\))/
    =)

    PHP: PCRE - Manual
    Regulärer Ausdruck – Wikipedia

    mehr braucht man eig. ned
     
  6. 15. Dezember 2008
    AW: preg_replace problem

    jaha liegt auf der hand
    naja also auf diese art und weise klappt es wenn ein punkt drin ist, aber ohne einen punkt wieder nicht xD und ich habe immer noch ka weshalb
    aber ich werde mir mal deine lektüre zur hand nehmen, vllt kannste mir trotzdem nochmal helfen, weil ich bezweifle, dass ich es so schnell auf die reihe bekomme

    gruß encud
     
  7. 15. Dezember 2008
    AW: preg_replace problem

    ah, es klappt bei (+ 1.00,00 €) und bei (+ 1 €) ich hab aber (+ 1,00 €) vergessen ^^
    Code:
    /(\(\+\s\d+(?:\.\d{2,3}(?:,\d{2})?|,\d{2})?\s*(?:&euro;)\))/
    jetzt müsste des gehen =)

    passt auf:
    - (+ 1.00,00 €)
    - (+ 1,00 €)
    - (+ 1.00 €)
    - (+ 1 €)
    - (+ 10.000,00 €)
    usw...
     
  8. 15. Dezember 2008
    AW: preg_replace problem

    Sieht ja schonmal spektakulär aus, der reguläre Ausdruck.

    Ich selbst kenn mich da auch nicht so gut aus, könntest du deinen vielleicht etwas erklären, Murdoc? Also wofür \s \d etc. an den Stellen stehen? Blicke nicht ganz durch da ...
     
  9. 15. Dezember 2008
    AW: preg_replace problem

    @Murdoc: sehr geil jetzt klappt es , vielen lieben dank^^
    @:Ralphwiggum: Danke für den versucht, funkioniert nur leider nicht... aber dank murdoc hab ich ja jetzt auch schon ein ergebnis^^
    @p0w3rn4t0r: /s und /d kannste dir beim oben gepostetem link selber anschaun: Wikipedia

    naja um der materie reguläre ausdrücke ein bisschen näher zu kommen werde ich mir wohl demnächst mal ein kleines büchlein kaufen aus der reihe entwickler.press schnell und kompakt^^ hoffe das wird mich ein bisschen weiter bringen

    wenn das jemand kennt kann er mir ja vllt ne pn schreiben ob es zu empfehlen ist, ansonsten mache ich hier erstmal zu

    gruß encud und danke nochmal
     
  10. 15. Dezember 2008
    AW: preg_replace problem

    \s => space [\r\n und leerzeichen]
    \d => decimal [0-9]

    kein problem

    ~ closed
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.