keyboardsounds Geschrieben 15. Dezember 2004 Teilen 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 15. Dezember 2004 Teilen Geschrieben 15. Dezember 2004 könntest du bitte ein wenig ausfühlicher werden. Ich raffs nicht :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
keyboardsounds Geschrieben 15. Dezember 2004 Autor Teilen 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); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 15. Dezember 2004 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
keyboardsounds Geschrieben 16. Dezember 2004 Autor Teilen 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 16. Dezember 2004 Teilen 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.