preg_replace regex problem
berd
- php
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
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/)
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
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
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
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