Zum Inhalt springen

eregi / ereg_match / preg_match


Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen


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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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