Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 26
  1. #1
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361

    wieder einmal regex

    hi!
    ich werde aus den regexes nicht schlau, habe aber noch keine gescheite einführung gefunden...
    hat da jemand einen Link? (und: php4-forum.de ist KEINE gute einführung).


    aber hier mal die Frage:
    ich möchte eine Style-Sheet-Datei öffnen und alle informationen über color und bgcolor usw. scharz / weiß einfärben, als Print View.
    ich stelle mir das so vor:
    das Script soll suchen nach | und ersetzen durch:

    "background-color:*;" | "background-color:white;"
    "color:*;" | "color:black;"
    "border-color:*;" | "border-color: black;"
    "background-image:*;" | "background-image:none;"

    usw.
    * steht wie immer für eine beliebige Zeichenkette,
    wie kann ich das als regex formulieren?

    danke,
    adrian
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  2. #2
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361
    och leute, hilfe!
    das kann doch nicht so schwer sein ;-))

    ich möchte doch nur eine Zeichenkette, die einen Variablen Wert hat, suchen und durch ein fixe / feste Zeichenkette replacen ...

    aber mir fehlen da halt echt die Grundlagen, und keine Website, die ich bis jetzt gefunden habe, stellt diese gut dar....



    gruß,
    adriman
    Geändert von afoeder (02-07-2002 um 19:49 Uhr)
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  3. #3
    style-guide! ist offline Lounge-Member
    registriert
    19-09-2001
    Ort
    /nrw/zuhaus
    Beiträge
    2.601

  4. #4
    style-guide! ist offline Lounge-Member
    registriert
    19-09-2001
    Ort
    /nrw/zuhaus
    Beiträge
    2.601
    Statt Ellenlang nach einer Regex zu suchen....

    Mach doch lieber zwei Style Sheets mit absolut identischen Klassen und entscheide anhand eines URL Stringes, was genommen wird.

    Andere Möglichkeit wäre es, direkt das Style Sheet als PHP Datei mit einem Header "getarnt" an den Client zu schicken, anhand der übergebenen Parameter werden die Farben gewählt.

  5. #5
    Avatar von Albu
    Albu ist offline Super Moderator
    registriert
    04-07-2001
    Beiträge
    13.501
    also tarnen muß man gar nicht, denn wofür gibt es bei CSS den Media Type??

    also
    <link rel="stylesheet" type="text/css" media="print, handheld" href="blacknwhite.css">
    <link rel="stylesheet" type="text/css" media="screen" href="screen.css">

    sollte z.B. für print und handhelds ein anderes Stylesheet nehmen (genaueres siehe Kapitel 7 CSS 2.0 Spec)
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  6. #6
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361
    leut, danke, das ist nett, aber auf die Idee wäre ich auch gekommen.
    und ohne jetzt unhöflich oder undankbar zu sein: mir ist schon oft aufgefallen, das eine Frage / ein Prolem nicht gelöst, sondern umgangen wird.


    Der Grund, warum ich es SO machen will:

    1. Ich möchte das Script für alle meine Projekte verwenden, ohne das ich jedesmal zwei CSS schreiben muss.
    2. Wenn sich an einem CSS was ändert, möchte ich das nicht bei einem zweiten mitändern.
    Das sind redundante Informationen, die vermieden werden können und sollen.
    Es vermeiden sich tippfehler, ich habe weniger Dateiaufwand, usw (einen Gruß an die Datenbankentwickler ;-)


    vielen Dank,

    adrian
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  7. #7
    Avatar von Albu
    Albu ist offline Super Moderator
    registriert
    04-07-2001
    Beiträge
    13.501
    Du suchst nur einen Regex?

    wie wärs mit
    /background-color:[^;]*;/
    oder also PHP:
    preg_replace ("/background-color:[^;]*;/i", "background-color:white", $searchText);

    aber was ist daran so schwer?!? Hab ich grad im PHP Manual nachgelesen....
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  8. #8
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361
    das wird wahrscheinlich funktionieren, so hatte ich mir das gedacht.

    was daran so schwer ist? Ich habe leider keine Ahung von regex, weiß, dass damit einiges geht, und bin immer noch auf der suche nach einem guten Tutorial


    Gruß,
    adrian
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  9. #9
    Avatar von Comet
    Comet ist offline Administrator
    registriert
    17-09-2001
    Ort
    Austria | Westendorf
    Beiträge
    2.182
    Hallo!

    Also ich würde da jetzt ne Funktion folgendermassen gestalten:

    PHP-Code:

    function changeStyle($pattern,$newValue,$string)
    {
        return 
    preg_replace("/".$pattern.":\(.*);/" $pattern.":".$newValue.";/",$string);
    }


    //Sollte so aufgerufen werden

    echo changeStyle("background-color","white",$string); 
    Alles klar?
    Hab nicht probiert obs geht.
    Geändert von Comet (02-07-2002 um 23:51 Uhr)
    ..:::Andi:::..

  10. #10
    Avatar von Comet
    Comet ist offline Administrator
    registriert
    17-09-2001
    Ort
    Austria | Westendorf
    Beiträge
    2.182
    Hallo!

    Hab noch ein klein wenig rumgeschraubt, siehe oben.
    ..:::Andi:::..

  11. #11
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361
    also, ich habe jetzt noch ien bisschen herumprobiert und nachgelesesen und so, und bin auf folgendes halbewgs funktionierendes Ergebnis gekommen:

    PHP-Code:
    echo eregi_replace("color:(.*);""color:black;"$FileContent); 
    nur als Beispiel.

    Jetzt habe ich aber das Problem, das er mir in einem großen Style-Sheet den ersten Treffer rausholt, ihn korrekt ersetzt, sonst aber nichts!
    so steht also in meinem geparsten Script

    a:link{ color:black;}

    das ist richtig, vorher stand da a:link{ color:#000080;}, aber drumherum noch einiges anderes Zeugs.

    ich schätze, das liegt an der falschen Anwendung der Funktion eregi_replace..
    muss ich da mit einer Schleife arbeiten, damit ALLE Treffer verarbeitet werden?

    danke,
    adria
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  12. #12
    Avatar von Albu
    Albu ist offline Super Moderator
    registriert
    04-07-2001
    Beiträge
    13.501
    @Comet: also (.*); ist aber nicht gut, denn ; ist ja auch ein . also anders ausgedrückt wird er dabei alles bis zum letzten Semikolon innerhalb einer Zeile ersetzen....
    z.B.:

    a:hover { color: red; font-weight: bold; font-size: 10}
    macht er zu
    a:hover { color: white; font-size: 10}
    oder irre ich mich??

    [^;] ist da wesentlich besser
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  13. #13
    Avatar von afoeder
    afoeder ist offline Routinier
    registriert
    10-08-2000
    Ort
    Winnenden, BW
    Beiträge
    361
    was ist denn eigenlich der Unterschied zwischen ereg und preg?

    denn, albu, wenn ich Deinen Vorschlag 1:1 übernehme, schreibt er mir einen Error "Delimiter Character must not be alphanumeric".

    was will der denn auftrennen oder separieren???


    danke,
    adrian
    Is this the potato farm?
    - Yes, I'm Albert Potato.

  14. #14
    Avatar von Comet
    Comet ist offline Administrator
    registriert
    17-09-2001
    Ort
    Austria | Westendorf
    Beiträge
    2.182
    Hallo Albu!

    Alles klar hab ich nicht mitgedacht, dann würde ich es aber so machen:

    PHP-Code:

    function changeStyle($pattern,$newValue,$string)
    {
        return 
    preg_replace("/".$pattern."\:\(.*);/sU" $pattern.":".$newValue.";",$string);
    }


    //Sollte so aufgerufen werden

    echo changeStyle("background-color","white",$string); 
    Geändert von Comet (03-07-2002 um 14:34 Uhr)
    ..:::Andi:::..

  15. #15
    Avatar von Albu
    Albu ist offline Super Moderator
    registriert
    04-07-2001
    Beiträge
    13.501
    was spricht gegen "[^;]" ???

    so sollte es aber gehen:
    preg_replace ("/background-color:[^;]*;/i", "background-color:white", $searchText);
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

Seite 1 von 2 12 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •