Portal > Foren > PHP > PHP-Programmierung > Hex-Farbcode validieren
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 09.02.2006, 17:43 Nach oben    #21
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Danke für deine Mühe. Da ich grad mit der Funktion zu tun habe hab ich das Ganze mal zu einer Funktion zusammengefasst:
PHP-Code:
<?php
function ValidateColor($color) {
         
// Prüft die eingegebene Farbe auf Ihre Gültigkeit
         
$color trim($color);
         
$err '';
         
$valid true;
         
         
// #ffffff / #fff
         
$hexPattern '~^#?([0-9a-f]{3}\b|[0-9a-f]{6}\b)$~i';
         
         
// rgb(50%, 100%, 150%)
         
$rgbPatternPercent '~^rgb\(\s*([0-9]{1,3}%)\s*,\s*([0-9]{1,3}%)\s*,\s*([0-9]{1,3}%)\s*\)$~i';
         
         
// rgb(50, 100, 150);
         
$rgbPatternRGB '~^rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)$~i';

         
// Nur zu Testzwecken
         
echo 'Prüfe ' $color ': ';
         
         if(
preg_match($hexPattern$color)) {
                 
$valid true;
         }
         
         elseif(
preg_match($rgbPatternPercent$color$test)) {
                 
// RED
                 
if($test[1] < OR $test[1] > 100) {
                         echo 
"Fehler bei der %-Angabe RED ($test[1])";
                         
$valid false;
                 }

                 
// GREEN
                 
if($test[2] < OR $test[2] > 100) {
                         echo 
"Fehler bei der %-Angabe GREEN ($test[2])";
                         
$valid false;
                 }
                 
                 
// BLUE
                 
if($test[3] < OR $test[3] > 100) {
                         echo 
"Fehler bei der %-Angabe BLUE ($test[3])";
                         
$valid false;
                 }
         }
         
         elseif(
preg_match($rgbPatternRGB$color$test)) {
                 
// RED
                 
if($test[1] < OR $test[1] > 255) {
                         echo 
"Fehler bei der RGB-Angabe RED ($test[1])";
                         
$valid false;
                 }
                 
                 
// GREEN
                 
if($test[2] < OR $test[2] > 255) {
                         echo 
"Fehler bei der RGB-Angabe GREEN ($test[2])";
                         
$valid false;
                 }
                 
                 
// BLUE
                 
if($test[3] < OR $test[3] > 255) {
                         echo 
"Fehler bei der RGB-Angabe BLUE ($test[3])";
                         
$valid false;
                 }
         }
         
         else {
                 
$valid false;
         }
         
         
// Ebenso nur zu Testzwecken
         
if($valid == false$valid 0;
         return 
$valid;
}
?>
Normalerweise benutz ich keine ", aber ich war zu faul von daher - entschuldigt bitte
Zum testen:
PHP-Code:
<?php
         
echo ValidateColor'#fff' ) . '<br />';
         echo 
ValidateColor'#ffffff' ) . '<br />';
         echo 
ValidateColor'#fgf' ) . '<br />';
         echo 
ValidateColor'#abcdefg ') . '<br />';
         
         echo 
ValidateColor'rgb(1%, 100%, 65%)' ) . '<br />';
         echo 
ValidateColor'rgb(101%, 5%, 12%)' ) . '<br />';
         echo 
ValidateColor'rgb(200%, 300%, 0%)') . '<br />';
         echo 
ValidateColor'rgb(1%, 2%) ') . '<br />';
         
         echo 
ValidateColor'rgb(1, 2, 3)' ) . '<br />';
         echo 
ValidateColor'rgb(100, 200, 300)' ) . '<br />';
         echo 
ValidateColor'rgb(255, 255, 255)' ) . '<br />';
         echo 
ValidateColor'rgb(bla)' ) . '<br />';
         
         echo 
ValidateColor'rgb(100%, 20, 30)' ) . '<br />';
?>
Die Ausgabe ist dann folgende:
Zitat:
Prüfe #fff: 1
Prüfe #ffffff: 1
Prüfe #fgf: 0
Prüfe #abcdefg: 0
Prüfe rgb(1%, 100%, 65% 1
Prüfe rgb(101%, 5%, 12% Fehler bei der %-Angabe RED (101%)0
Prüfe rgb(200%, 300%, 0% Fehler bei der %-Angabe RED (200%)Fehler bei der %-Angabe GREEN (300%)0
Prüfe rgb(1%, 2% 0
Prüfe rgb(1, 2, 3 1
Prüfe rgb(100, 200, 300 Fehler bei der RGB-Angabe BLUE (300)0
Prüfe rgb(255, 255, 255 1
Prüfe rgb(bla 0
Prüfe rgb(100%, 20, 30 0
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45