![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Hallo,
bin gerade an den Überlegungen für eine Funktion zur Hex-Farbcode Validierung. Es gibt ja verschiedene Formen: #fff, #ff0000, fff, ff0000, &Hff0000 usw.. Nun würde es mich mal interessieren, wie lassen sich Hex-Farbcodes noch schreiben (evtl mit 0x..) und wie kann ich prüfen ob der eingegebene Hexwert auch korrekt ist? Reicht es, einfach das Ganze nach RGB umzuwandeln und dann auf < 0 und > 255 zu prüfen?
__________________
http://www.ChrisDiary.De |
|
|
|
|
|
Nach oben #2 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Die Frage ist schonmal: für welchen Bitbereich du validieren möchtest.
Und es gibt laut www.css4you.de auch farben, die nicht sauber dargestellt werden, deswegen gibt es dort die liste der "websicheren" Farben. Willst du die validieren was in einem Formular eingegeben wird? Wenn ja dann würd ich einfach #rrggbb als vorgabe machen und fertig
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Also vorgegeben ist #rrggbb .. #000000 Minimum, #ffffff Maximum, eben die Farbpalette einmal komplett durch. Problem ist ja, dass der User diese Farbe eingibt und es geprüft werden soll, ob das ein gültiger Farbwert oder nicht ist. Ob das Ding sauber dargestellt wird oder nicht ist egal - eine Funktion zum Websichere-Farben konvertieren hab ich schon geschrieben (es geht
Ziel ist nur, den Code zu validieren. Daher wollte ich Fragen was es noch alles an Varianten gibt, einen HexFarbcode zu schrebien, damit ich diese in meinen Regex einbauen und auswerten kann. (fff, #fff, #ffffff, &Hfff, &Hffffff ...)
__________________
http://www.ChrisDiary.De |
|
|
|
|
|
Nach oben #5 | ||
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Zitat:
Nuja, an diese Namen-Farben hatt ich noch nicht geadacht
__________________
http://www.ChrisDiary.De |
||
|
|
|
|
|
Nach oben #7 | ||
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Zitat:
__________________
http://www.ChrisDiary.De |
||
|
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
rgb(%, %, %) gibt es eben so..
__________________
http://www.ChrisDiary.De |
|
|
|
|
|
Nach oben #13 |
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Mein erster Ansatz ist dieser:
Code:
((?:#)?(([a-f0-9]{6})|([a-f0-9]{3}))|(rgb\([0-9]{1,3},[0-9]{1,3},[0-9]{1,3}\)))
__________________
http://www.ChrisDiary.De |
|
|
|
|
|
Nach oben #14 | |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Hab auch mal gebastelt:
Zitat:
Hinzu müsste man dann noch überprüfen, ob Prozentangaben von 0-100 gehen, und die anderen von 0-255. |
|
|
|
|
|
|
Nach oben #15 | |||
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Zitat:
Zitat:
Code:
(1?[0-9]?[0-9]\%) und ([0-2]?[0-5]?[0-5])
__________________
http://www.ChrisDiary.De Geändert von Chr!s (09.12.2005 um 19:19 Uhr). |
|||
|
|
|
|
|
Nach oben #16 | |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Zitat:
Bei einer Zeitabfrage geht das noch. Hier wird ich danch noch testen ob die Zahl > 0 und < 255 etc. ist. Vor langerweile hab ich noch etwas gefummelt (liebe regexp PHP-Code:
|
|
|
|
|
|
|
Nach oben #17 |
|
Erfahrener Benutzer
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
|
Danke
Damit werd ich sicher mein Problem lösen Falls noch was einfällt - ich hab keine Einwände dagegen
__________________
http://www.ChrisDiary.De |
|
|
|
|
|
Nach oben #18 |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Eben kommt mir noch der Gedanke mit preg_replace_callback() müsste man auch was machen können.
Nun es soll zwar nicht ersetzt werden, aber die Suche nach dem Ausdruck bleibt ja das selbe Prinzip. Dann könnte man noch eine Funktion einbauen, die z.B. speziell bei rgb(..) die Inhalte prüft. ... nur so ein Gedanke ... |
|
|
|
|
|
Nach oben #19 |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Hmmm, hätte ich blos nie diese Thread gelesen, dann hätte ich diesen Mist nie gemacht
Zum nächsten basteln: PHP-Code:
Die Ausgabe sieht dann etwa so aus: http://www.cix88.de/cix_php/php_rege...lide_color.php Geändert von CIX88 (09.12.2005 um 21:16 Uhr). |
|
|
|
|
|
Nach oben #20 |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Moin, die Geschichte mit rgb( r, g, b) habe ich mal näher (mit IE und FF) durchprobiert. Dabei vielen mit unterschiedliche Ergebnisse zwischen IE und FF auf. 1. Zwischen rgb und ( darf sich kein Leerzeichen befinden. IE und FF werten dies nicht aus. 2. rgb( 100%, 0, 0) Und hier kommt der nette Teil Der IE werdet dies aus, der FF hingegen nicht. Der FF will alle RGB-Angaben in Prozent oder als RGB-Wert haben, dem IE scheint es dabei egal zu sein. Naja, daraus ergäbe sich: // pattern: #fff oder #ffffff $patt_1 = '~^#?([0-9a-f]{3}\b|[0-9a-f]{6}\b)$~i'; // pattern: rgb( 100%, 100%, 100%) - Angaben in Prozent $patt_2 = '~^rgb\(\s*([0-9]{1,3}%)\s*,\s*([0-9]{1,3}%)\s*,\s*([0-9]{1,3}%)\s*\)$~i'; // pattern: rgb( 100, 100, 100) - Angaben in RGB-Wert $patt_3 = '~^rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)$~i'; Auch Angaben wie rgb( 100 %, 0, 0) sind dann fehlerhaft, weill zwischen 100 und % ein Leerezeichen ist. Weil grad Wochende ist, habe ich das mal so gemacht: PHP-Code:
|