keyboardsounds Geschrieben 15. Dezember 2004 Geschrieben 15. Dezember 2004 hallo zusammen, ich muss ein php-skript schreiben welches unter anderem bestimmte zeilen einer CSS-datei modifiziert. Zeile: a.navi-top:link {font-family: Helvetica,Verdana,Arial,Sans-Serif; font-size: 12px; color: #3399ff; text-decoration: none; font-weight: bold } Beispiel: color: #000000 soll ersetzt werden durch: color: #FFFFFF Der zu schreibende reguläre Ausruck lautet dann ja: a.navi-top:link\s{(.*)\scolor:\s#[a-fA-F0-9]{6} bzw. ohne farb-wert: a.navi-top:link\s{(.*)\scolor:\s# und wie stelle ich die such und farb-ersetz-funktion an? komme nicht weiter. vielen dank im vorraus!
kills Geschrieben 15. Dezember 2004 Geschrieben 15. Dezember 2004 könntest du bitte ein wenig ausfühlicher werden. Ich raffs nicht :-)
keyboardsounds Geschrieben 15. Dezember 2004 Autor Geschrieben 15. Dezember 2004 also ... es soll zum beispiel die zeile gefunden werden, die folgenden anfang hat: a.navi-top:link { irgendwann steht ein farbwert, zum beispiel: color: #3399ff; dieser soll dann ersetzt werden. um eine suche nach dem schema a.navi-top:link { [...] color: #??????; hinzubekommen, bedarf es ja dem such-ausdruck ich möchte nur die stelle mit dem farbwert ändern lassen. ich habe schon eine "statische" ersetzen-funktion aufgesetzt, aber sobald da in der zeile nur ein zeichen anders ist, funktioniert es nicht mehr. so sieht mein altes werk aus: $string = $inhalt; $needle = "a.navi-top:link {font-family: Helvetica,Verdana,Arial,Sans-Serif; font-size: 12px; color: #"; $needle_len = strlen($needle); $position_num = strpos($string,$needle) + $needle_len; $farbe_1 = substr("$string",$position_num,6);
DevilDawn Geschrieben 15. Dezember 2004 Geschrieben 15. Dezember 2004 $newcol = "ffcc00"; $newline = preg_replace( "/^(a\.navi-top:link.*[ ;]color:\s+#)[0-9]+(.*)$/", "\$1".$newcol."\$2", $oldline); [/php] [b]^a\.navi-top:link[/b] identifiziert die Zeile [b].*[/b] erlaubt beliebig viele Zeichen bis zum... [b][ ;]color:\s#[/b] (color darf von space oder ; angeführt werden, dem : dürfen whitespaces bis zum # folgen Danach kommt die Farbe, die brauchen wir nicht (kein geklammerter Ausdruck), besteht aber aus [b][0-9]+[/b] Danach folgt der Rest [b](.*)$[/b] Dann bauen wir dei beiden geklammerten Teile wieder zusammen, aber diesmal mit $newcol dazwischen. Voila. Farbe ersetzt.
keyboardsounds Geschrieben 16. Dezember 2004 Autor Geschrieben 16. Dezember 2004 dank dir! die lösung funktioniert einwandfrei. fehlt jetzt nur noch der kleine schliff, damit auch ein mehrzeiliger string durchlaufen werden kann. kann ich denn auch einen farbwert von irgendwo auslesen lassen? im prinzip ist es ja das gleiche schema. danke im voraus!
DevilDawn Geschrieben 16. Dezember 2004 Geschrieben 16. Dezember 2004 kann ich denn auch einen farbwert von irgendwo auslesen lassen?im prinzip ist es ja das gleiche schema. Exakt. In dem Fall klammerst du nur den Farbwert und ersetzt durch diesen. Sozusagen die invertierte Auswahl dessen was da oben steht. Statt (prefix)Farbe(suffix) -> (prefix)neuefarbe(suffix) machst du halt prefix(Farbe)suffix -> (Farbe)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden