Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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);

Geschrieben


$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.

Geschrieben

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!

Geschrieben
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)

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...