Cytat(nospor @ 19.10.2011, 13:17:12 )

No to napisz jak. Nie bądź egoistą. Niech potomni którzy natrafią na ten wątek też skorzystają.
FINALNIE:
$tablica1=$_POST['text'];
for($i=0; $i<strlen($tablica1); $i++)
{
if(ord($tablica1[$i])>122) $znak.= ord($tablica1[$i]);
if(ord($tablica1[$i])<=122) $znak = ord($tablica1[$i]);
if((($znak >='97')&&($znak <='122'))||(($znak >='65')&&($znak <='90'))||($znak =='197132')||($znak =='197131')||($znak =='195179')||($znak =='195147')||($znak =='196135')||($znak =='196134')||($znak =='196153')||($znak =='196152')||($znak =='196133')||($znak =='196132')||($znak =='197188')||($znak =='197187')||($znak =='197186')||($znak =='197185')||($znak =='197155')||($znak =='197154'))
{
print 'wykryto znak A-Z lub a-z lub polski znak <br />';
$znak='';
}
}
objaśnienie:
ciąg znaków z formularza, odebrany metodą POST, przyporządkujemy do zmiennej $tablica1 i tworzy się tablica znaków.
długośc tej tablicy zmierzymy za pomocą funkcji strlen();
pętla for będzie się wykonywać tak długo, jak długa bedzie tablica1;
znaki od A-Z i od a-z zajmują w tablicy 1 miejce, ale polskie znaki np."ń", "ć" - dwa miejsca
w dodatku - oba bajty polskich znaków są większe od 122
wiemy jednak, że znaki od A-Z i od a-z w tablicy kodów ASCII mają wartości mniejsze od 122
wystarczy sprawdzić czy wartość w tabeli1 jest mniejsza od 122 czy większa
jeśli jest mniejsza lub równa- znaczy, że trafiliśmy na znak od A-Z lub a-z
jesli jest większa znaczy, że trafiliśmy na jeden z polskich znaków.
tak długo jak długo wartość tablicy1 będzie większa od 122 tak długo dodajemy znaki do siebie
(linijka if(ord($tablica1[$i])>122) $znak.= ord($tablica1[$i]); )
aby sprawdzić, że w odebramym ciągu są tylko litery - bez znaków specjalnych
wystarczy porównać wartośc $znak z odopwiednikami z tableli ascii
funkcja ord() zamienia nam znak na kod ascii