String-Funktionen funktionieren nicht....

Pius Hermit

Erfahrenes Mitglied
Hallo Zusammen,
kann jemand von Euch in der folgenden Funtion einen Fehler erkennen?
Ich habe irgendwie ein Brett vor dem Kopf...
PHP:
function fehlerText($s, $l)
{
	$erlaubt = "abcdefghijklmnopqrstuvwxyzäöüABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß-1234567890.,;:";
	$verboten = "--";
	$result = false;
	for ($i=0; $i<strlen($s); $i++) 
	{
	  if (strpos($erlaubt, substr($s, $i, 1))==false) $result = true;
	}
  	if (strpos($s,$verboten)!=false) $result = true;
	return $result;
}
 
Ein regulärer Ausdruck würde das vereinfachen:
PHP:
function fehlerText($s, $l)
{
    return !preg_match('/^[a-zäöüA-ZÄÖÜß\-0-9,.;:]*$/', $s);
}
 
Ah, jetzt versteh ich was du möchtest. Du möchtest einerseits die Menge der erlaubten Zeichen angeben können. Aber gleichzeitig bestimmte Zeichenfolgen ausschließen (hier: --).

Aber auch das könntest du durch einen regulären Ausdruck beschreiben:
Code:
^[a-zäöüA-ZÄÖÜß0-9,.;:]+(?:-[a-zäöüA-ZÄÖÜß0-9,.;:]+)*$
Damit darf der Bindestrich nur einzeln innerhalb der Zeichenfolge vorkommen.

Mit deiner Vermutung hast du aber insofern recht, als die strpos() im Falle einer Übereinstimmung am Anfang den Wert 0 zurückgibt, was als gleich false interpretiert wird. Ein strpos(…) === false ist also richtig.
 
Oh ja, vielen Dank...
mein Anliegen war, ggf. aus der Datenbank (einer Verwaltungstabelle) eine Wert in eine Variable auszulesen. In diesem Fall den erlaubten und die verbotenen Strings.
Ist es möglich, innerhalb eines "regulären Ausdrucks" mit Variablen zu arbeiten?
 
Zurück