berd: preg_replace regex problem

n'abend !

ich möchte bei strings wie z.b. diesem
---
color:#000;
---

"schönheitsänderungen" per php durchführen. immer nach einem doppelpunkt soll nämlich einen (auch nicht mehrere) abstand sein.
ich weiss dass es mit der funktion preg_replace() möglich ist, doch blicke ich beim regulären ausdruck noch nicht wirklich durch.

kann mir da jemand helfen ?

gruss

  1. Hallo,

    immer nach einem doppelpunkt soll nämlich einen (auch nicht mehrere) abstand sein.
    ich weiss dass es mit der funktion preg_replace() möglich ist, doch blicke ich beim regulären ausdruck noch nicht wirklich durch.

    Einen regulären Ausdruck braucht man dafür garnicht - ein einfaches
     ~~~php $str = 'color:#000;';
     $str = str_replace(':',': ',$str);
     echo $str; // gibt "color: #000;" aus

    reicht völlig.  
      
    Grüße aus Nürnberg  
    Tobias
    
    -- 
    TOP7: [Hinweise, dass du wieder keinen Nobel-Preis bekommst](http://www.top7-liste.de/?liste=400)  
    Softwaretipp: [Opera](http://www.opera.com/)
    
    1. Hallo Tobias.

      immer nach einem doppelpunkt soll nämlich einen (auch nicht mehrere) abstand sein.
      ich weiss dass es mit der funktion preg_replace() möglich ist, doch blicke ich beim regulären ausdruck noch nicht wirklich durch.
      Einen regulären Ausdruck braucht man dafür garnicht

      Doch, hier ist einer erforderlich.

      • ein einfaches

      $str = 'color:#000;';

      $str = str_replace(':',': ',$str);
      echo $str; // gibt "color: #000;" aus

      
      > reicht völlig.  
        
      Dann würde aus folgendem:  
        
      ~~~css
      a:hover {  
        color:#069;  
        content:': Foo';  
      }
      

      Folgendes:

      a: hover {  
        color: #069;  
        content: ':  Foo';  
      }
      

      Dies ist ganz gewiss nicht erwünscht.

      Einen schönen Montag noch.

      Gruß, Mathias

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. gudn tach!

        Einen regulären Ausdruck braucht man dafür garnicht

        Doch, hier ist einer erforderlich.

        naja, nicht notwendig. man kann ja alles auch nachbauen...

        a: hover {

        color: #069;
          content: ':  Foo';
        }

        
        >   
        > Dies ist ganz gewiss nicht erwünscht.  
          
        ist "a: hover" erwuenscht?  
          
        waere also  
          s/^([^:]+:)/$1 /g  
        (was noch sehr leicht auch ohne regexp bastelbar ist) oder  
          s/^([\t a-z-]+:)/$1 /g  
        eine loesung?  
          
        falls nicht, aber die eigenschaften immer eingerueckt sind, waere es vielleicht mit  
          s/^([\t ]+[a-z-]+:)/$1 /g  
        getan (ich kenne die specs fuer eigenschafts-namen nicht).  
          
        ansonsten kann's auch ganz schnell haarig werden.  
          
        prost  
        seth
        
        1. Hallo seth.

          ist "a: hover" erwuenscht?

          Nein, da in jedem Falle fehlerhaft.

          a :hover

          Dies allerdings wäre in Ordnung.

          waere also
            s/^([^:]+:)/$1 /g
          (was noch sehr leicht auch ohne regexp bastelbar ist) oder
            s/^([\t a-z-]+:)/$1 /g
          eine loesung?

          Wohl eher auch nicht. Einen brauchbaren Ausdruck habe ich auch noch nicht zusammen bekommen, aber in jedem Fall darf die Zeichenkette vor dem Doppelpunkt keine geöffnete geschweifte Klammer enthalten (hiermit werden Pseudoklassen und -elemente in den Selektoren ausgenommen). Zudem muss festgelegt werden, dass sich der Doppelpunkt nicht innerhalb von einfachen oder doppelten Anführungszeichen befindet (siehe content-Eigenschaft).

          An anderer Stelle dürfen keine Doppelpunkte vorkommen.

          Einen schönen Montag noch.

          Gruß, Mathias

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]
  2. gudn tach!

    ich möchte bei strings wie z.b. diesem

    color:#000;

    "schönheitsänderungen" per php durchführen. immer nach einem doppelpunkt soll nämlich einen

    nominativ: "ein" (nicht akkusativ ("einen"))

    (auch nicht mehrere) abstand sein.

    meinst du sowas wie s/:[^ ]/ /g?
    das waere preg_replace('/:[^ ]/', ' ', $str)

    ich weiss dass es mit der funktion preg_replace() möglich ist, doch blicke ich beim regulären ausdruck noch nicht wirklich durch.

    vielleicht hilft einer der folgenden links.
    http://de2.php.net/manual/en/reference.pcre.pattern.syntax.php
    http://regexp-evaluator.de/tutorial/
    http://www.php-resource.de/tutorials/read/10/1/

    prost
    seth