Function EREG

unrealzero_php

Erfahrenes Mitglied
Hallo Zusammen

Hab mir eine kleine Funktion geschrieben welche die Eingabe prüfen soll. Es soll geprüft werden, ob es sich um einen Farbwert handelt oder nicht.

Das Problem bei meiner Funktion. Es wird lediglich der erste Buchstaben nach der # geprüft. Wie kann ich alle sieben Zeichen auf die Werte 0-9,a-f,A-F prüfen?

PHP:
$color = $_POST['color'];
function ColorCheck($color)
{
if(ereg("(#+[0-9,a-f,A-F])", $color))
{
	if(strlen($color) == 7)
	{
	 return TRUE;
	}
	else
	{
	 return FALSE;
	 }
}
else
{
	return FALSE;
}
}
 
Ich weiss ja nicht, wie das bei den ereg Funktionen ist, aber bei den preg Funktionen musst du den Delimiter für das Pattern - in deinem Falle die Raute - auch ans Ende setzen.

Wenn du statt ereg_ auf preg_ umsteigen wollen würdest (die preg_ Funktionen sind performanter und setzen auf den genormten Standard was die Pattern angeht), dann kann ich dir hier ein Tutorial zu dem Thema anbieten.

Würde aber erstmal versuchen, auch eine Raute an das Ende des Pattern zu stellen. ;)
 
Probier mal folgenden regulären Ausdruck: ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$. Für eine der preg_-Funktionen wäre folgender regulärer Ausdruck möglich: /^#(?:[0-9A-F]{6}|[0-9A-F]{3})$/i.
 
Zuletzt bearbeitet:
@Gumbo
Leider funktionieren beide Ausdrücken nicht.

Es wird auch hier lediglich der erste Wert nach dem #-Zeichen überprüft!?
 
Gumbo hat gesagt.:
Probier mal folgenden regulären Ausdruck: ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$. Für eine der preg_-Funktionen wäre folgender regulärer Ausdruck möglich: '/^#(?:[0-9A-F]{3}|[0-9A-F]{6})$/i'.

Leider funktionieren beide Ausdrücken nicht.

Es wird auch hier lediglich der erste Wert nach dem #-Zeichen überprüft!?
 
Was funktioniert denn nicht? Bei mir funktionieren beide Ausdrücke ausgezeichnet:
PHP:
<?php

	$string = '#6f5eb5';
	var_dump((bool)ereg('^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$', $string));
	var_dump((bool)preg_match('/^#(?:[0-9A-F]{6}|[0-9A-F]{3})$/i', $string));

?>
 
Gumbo hat gesagt.:
Was funktioniert denn nicht? Bei mir funktionieren beide Ausdrücke ausgezeichnet:
PHP:
<?php

	$string = '#6f5eb5';
	var_dump((bool)ereg('^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$', $string));
	var_dump((bool)preg_match('/^#(?:[0-9A-F]{6}|[0-9A-F]{3})$/i', $string));

?>
Sorry, war mein Fehler. Danke!
 
Zurück