Napisałem prostą funkcję sprawdzającą zadany tekst pod kątem dozwolonych znaków. Chcę dzięki niej walidować dane pochodzące z formularza - tak aby np. napisy nie zawierały apostrofów czy innych znaków mogących spowodować problemy przy dodawaniu do bazy. Może komuś się przyda ten kawałek kodu

. Dajcie znać jeśli znajdziecie jakieś błędy.
<?php
/*
Sprawdza, czy podany tekst składa się wyłącznie z dozwolonych znaków. Domyś
nie
dozwolone są tylko litery. Dodatkowo można włączyć akceptowanie cyfr ($allow_numbers),
oraz podać akceptowane znaki specjalne (np. $allowed_special_chars=' _-' spowoduje,
że akceptowane będą spacje, znaki podkreślenia i myślniki).
Uwaga: białe znaki na początku i na końcu tekstu są ignorowane, nawet gdyby miał
y
spowodować przekroczenie maksymalnej długości. Należy samodzielnie zadbać o
ich
usunięcie.
*/
function is_valid_string($text, $min_length=1, $max_length=250, $allow_numbers=false, $allowed_special_chars='') {
if($min_length<0) $min_length=0;
// ignorujemy białe znaki na końcu i początku tekstu
// sprawdzamy długosć tekstu
if(strlen($text)<$min_length || strlen($text)>$max_length) return false; // akceptacja pustego tekstu, jeżeli dozwolona jest zerowa długość
if($min_length==0 && $text=='') return true;
// obsługa cyfr
$numbers = $allow_numbers?'0-9':'';
// dodanie znaków przed każdym znakiem specjalnym
$allowed_special_chars = preg_replace('/([^ ])/i', '$0', $allowed_special_chars); // sprawdzenie wyrażenia regularnego
return preg_match('/^[a-ząćęłńóśźż'.$numbers.$allowed_special_chars.']{'.$min_length.','.$max_length.'}$/i', $text); }
?>