[REGEX] preg_replace

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

  • [REGEX] preg_replace

    Hi zusammen,
    Ich ersetze wörter oder abschnitte mit preg_replace, ok das geht ja auch
    nur hab ich da noch ein problem.
    Und zwar wenn ich jetzt nach z.b 'Hallo' suche soll er mir dies durch 'Tag' ersetzen, bis hier her kein problem.
    Nur möchte ich das wenn 'Hallo' zw. ' "" ' steht dann soll er mir dies nicht ersetzen.
    Oder ich suche nach einem Text der zw. "" steht dann soll er mir dies farbig machen nur in den "" steht dann noch ein \" und da soll der nicht beenden erst bei dem letzten " ohne \ .
    Hoffe ist irgendwie verständlich!

    Wie bekomme ich dies hin?
    Kann mir dabei einer helfen?

  • #2
    http://regexp-evaluator.de/tutorial/...en/#zirkumflex

    Kommentar


    • #3
      Danke das hab ich gesucht!
      direkt mal ausprobieren!

      Kommentar


      • #4
        hab das mal probiert:

        PHP-Code:
                $matches[1]=preg_replace("/\^([\\&quot;])[&quot;](.*?)\[&quot;]/si""<span style=\"color:red\">\"\\1\"</span> "$matches[1]); 
        ich will das der alles was in "" steht farbig macht in dem fall hier Rot.
        nur in dem Text stehen dann noch 'negierte' anführungszeichen \"
        diese sollen aber nicht berücksichtigt werden!


        was mache ich falsch?

        Kommentar


        • #5
          bekomme es einfach nicht hin alles hin und her probiert aber es geht nicht!

          Aber was ich noch fragen wollte ist ob es auch möglich ist
          nach werten zu suchen und ersetzten zb. nach test , is klar das geht
          aber test... und ...test und ...test... sollen nicht ersetzte werden. d.h werte die in anderen vielleicht vorkommen sollen nicht ersetzt werden.
          hab das schon mit /^(test)?$/ probiert aber das geht nicht .
          hoffe es ist einigermaßen verständlich erklärt!


          wie kann man das lösen?

          Kommentar


          • #6
            mach mal ein paar konkrete beispiele, ab besten die strings direkt in der php-syntax zeigen.

            Kommentar


            • #7
              ok hier mal ein paar auschnitte


              hier der code wo nach " " gesucht wird (das geht auch)
              PHP-Code:

              $matches
              [1]=preg_replace("/\&quot;(.*?)\&quot;/si""<span style=\"color:red\">\"\\1\"</span> "$matches[1]); 
              hier ein bsp. Text:

              PHP-Code:
              $matches[1]='Ein "kleiner \"test\" " text'
              so nun soll \" nicht beachtet werden.
              Im 1. bsp wird ja nach " " gesucht und der txt Farbig gemacht,
              nur hört der bei \" auf unf fäng bei \" wieder an is ja klar weil dort ja
              immer ein Anführungszeichen ist. nur dies soll der nicht beachten!
              ----------------------------------------------------

              dann noch nach txt suchen und ersetzten die genau
              passen nicht länger und nicht kürzer (...test... usw soll nicht ersetzt
              werden sondern nur test)

              PHP-Code:
              ...
              $code_suche_b[0]='/test/'
              ...
              $code_ersatz1_b="<span style=\"color:blue\">";
              $code_ersatz2_b="</span>";
              ... 
                 for(...)
                 {
              $matches[1] = preg_replace($code_suche_b[$ib]."isU",$code_ersatz1_b.eregi_replace("\/""" $code_suche_b[$ib]).$code_ersatz2_b,  $matches[1]);
                 } 
              ich hoffe jetzt is es was klarer was ich meine

              Kommentar


              • #8
                mmmh keiner eine Idee?

                Kommentar


                • #9
                  so gehts:

                  $text = 'Ein "kleiner \"test\" " text';
                  $pattern = '/([^\\\])"(.+?)([^\\\])"/';
                  $replace = '$1"<span style="color:red">$2</span>$3"';

                  echo preg_replace($pattern, $replace, $text);

                  $1 und $3 müssen wieder mit in den text reingeschrieben werden weil die sonst auch ersetzt werden (also in dem fall die leerzeichen vor den ")

                  Kommentar


                  • #10
                    Optimal das geht!
                    Danke für die antwort!

                    Ist es denn möglich die Var. $1 $2 und $3 auch rauszuholen ich meine die var weiterbenutzen in einem Script?

                    Kommentar


                    • #11
                      Original geschrieben von Phoenix666
                      Ist es denn möglich die Var. $1 $2 und $3 auch rauszuholen ich meine die var weiterbenutzen in einem Script?
                      Die Variablen werden nur für die RegEx gebraucht, das sind KEINE PHP-Variablen!! (auch darum nciht, weil sie vom Namen her nicht erlaubt wären)

                      Kommentar


                      • #12
                        "Rausholen" von Suchtrefferbestandteilen über preg_match(_all).
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Danke für die antwort!
                          habs soweit hinbekommen!

                          nur noch eine Frage(hoffe ich mal )

                          nun ich suche bestimmte Worte aus einem Array und lasse diese dann ersetzen, so:
                          PHP-Code:
                          $code_suche_g[0]='/text1/';
                          $code_suche_g[1]='/text2/';
                          $code_suche_g[2]='/text3/';
                          ...
                          $code_ersatz_g='ersatztext';
                          ....
                          $anz=count($code_suche_g)-1;
                          .....

                              for(
                          $i=0;$i<=$anz ;$i++)
                             {
                             
                          $matches[1] = preg_replace($code_suche_g[$i]."isU",   $code_ersatz_g,  $matches[1]);
                             } 
                          $matches[1] = Variable mit dem Text


                          Das geht auch,
                          aber nun möchte ich das diese Wörter nicht ersetzt werden wenn sie zw Anführungszeichen " stehen!
                          bsp:

                          | Hier ein beispiel "text1" | <- nicht ersetzen
                          | Hier ein beispiel text1 | <- ersetzen

                          wie bewerkstellige ich dies?

                          Hoffe habe nix wichtiges vergessen.



                          hab schon einiges probiert aber bekomme es nit hin.
                          REGEX is nit so mein Fall!

                          Kommentar

                          Lädt...
                          X