Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

eregi / ereg_match / preg_match

Empfohlene Antworten

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!

könntest du bitte ein wenig ausfühlicher werden.

Ich raffs nicht :-)

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


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

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!

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)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.