preg_replace problem

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

  • preg_replace problem

    Hi zusammen,

    ich hab da ein Problem,
    ich lasse bestimmte zeichen wie z.b =,(,) usw. farblich darstellen.
    Nur wenn 2 dieser zeichen hintereinander stehen nimmt der das 2. zeichen nicht. wenn mehr zeichen der selben sorte hintereinander stehennimmt der nur jedes 2.

    was mache ich hier in dem Code falsch:

    PHP-Code:

    $code_ersatz1_g
    ="<span style=\"color:green\">"
    $code_ersatz2_g="</span>";

    $sonderzeichen=array('\!',
    '\\|',
    '&amp;',
    '\\-',
    '\\+',
    '\\*',
    '&frasl;',
    '\\?',
    '\\%',
    '\\{',
    '\\}',
    '\\(',
    '\\)',
    '\\[',
    '\\]',
    '\\=');
            while (list(
    $val,$nex) = each($sonderzeichen)) 
            {
            
    $line=trim($nex);

                
    $matches[1] = preg_replace('#([^\\<span style(.*?)\\>]*?)'.$line.'([^\"color:]+?)#i'
                
    '$1'.$code_ersatz1_g.strtolower(eregi_replace('\\\\',"",$line)).$code_ersatz2_g.'$2',
                
    $matches[1],-1);

    #$matches[1] ist die var mit dem text.
            


    Oder kann man irgendwie mehrere Zeichen zusammenfassen und diese farblich darstellen?

    Wenn ja wie mache ich dies am besten?
    Zuletzt geändert von Phoenix666; 22.09.2006, 20:18.

  • #2
    wenn das:
    http://www.regex-tester.de/regex_20060922215411.html
    nicht das was du willst ist, dann bist du selber schuld.
    Slava
    bituniverse.com

    Kommentar


    • #3
      DANKE!
      den link kannte ich noch nicht

      aber jetzt stehe ich wieder vor dem prob wo ich vorher auch schon stand.

      der gibt mir teilweise was vom quellcode mit aus, nicht über all.

      bsp.

      ="color:green">weiterer text
      und das = zeichen macht der dann auch farbig!



      mfg

      Kommentar


      • #4
        du wolltest doch, dass "=" farbig ist, du hast es eigentlich in deinem array auch reingeschrieben?
        Slava
        bituniverse.com

        Kommentar


        • #5
          ok habs gesehen lag an meinem script geändert und der code geht
          Danke!

          nur noch eine Frage: wie kann ich da noch wörter hinzufügen?

          mfg

          Kommentar


          • #6
            ganz freundlich:
            du hast schon bemerkt, dass die andere Forum-user auf deine Frage kein Antwort gegeben haben?
            Das liegt nicht daran, dass die Leute sich mit regex nicht auskennen, sondern an deiner Fragestellung.

            und jetzt sag mir was du mit "noch wörter hinzufügen" meinst?
            wenn du noch die Wörter in suchmuster haben willst, dann machst du 2 arrays, in einem array stehen die suchmuster und in anderem (an der gleiche stelle) die ersatz-mustern.
            dann übergibst du diese arrays in preg_replace, mach aber keine schleife, da preg_replace auch selber mit diesen Arrays zu recht kommt.

            http://de.php.net/manual/de/function.preg-replace.php
            Slava
            bituniverse.com

            Kommentar


            • #7
              Danke für diese Antwort, muss man ja auch mal gesagt bekommen.
              Aber manchmal ist es auch nicht so einfach eine frage richtig zu formulieren das es jeder versteht. Sorry!

              Aber wieder zum Thema.

              Ok ich meine mit "noch wörter hinzufügen"
              das ich noch Wörter wie "hallo" ins suchmuster holen will.
              Mit meinen versuchen hat der nur nach einzelnen buchstaben
              aus diesem wort gesucht.

              hier mal der code:

              PHP-Code:
              $TXT = <<<EOF
              if($sas===$dsssds)))
              EOF;

              $pattern '/((?:\&frasl; )|[\|&\-\+\*\?\%\{}()[\]=]+)++/s';
              $ersatz '<span style="color:green">$1</span>';


              echo 
              preg_replace($pattern$ersatz$TXT); 
              hoffe dies ist jetzt verständlicher!?
              Zuletzt geändert von Phoenix666; 22.09.2006, 23:08.

              Kommentar

              Lädt...
              X