Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie czy imię składa się z tylko liter/polskie znaki również
Forum PHP.pl > Forum > PHP
mariolita
Witam Was, jak sprawdzać czy wprowadzone imię jest prawidłowe

wydaje mi się że najpewniejszą metodą będzie wymienić wszystki litery razem z polskimi i następnie porównać:


  1. header('Content-Type: text/html; charset=utf-8');
  2.  
  3. $imie = "mariola";
  4.  
  5. $polskie_znaki = 'a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż';
  6.  
  7. $usun_przerwy = str_replace(' ', '', $polskie_znaki);
  8.  
  9. $kodowanie = mb_strtolower($removeSpace, 'UTF-8');


I TUTAJ POTRZEBUJĘ SPRAWDZENIA CZY zmienna imię składa się tylko ze znaków wymienionych w $polskie_znaki
koodo218
Cytat(mariolita @ 12.03.2016, 11:54:57 ) *
wydaje mi się że najpewniejszą metodą będzie wymienić wszystki litery razem z polskimi i następnie porównać:

Nie prościej zrobić wyrażenie regularne?
mariolita
a możesz mi pokazać jak powinno to wyglądac?
mariolita
mam taki problem że po zapisaniu pattern '/^[a-ząśżźćłóęńĄŚŻŹĆŁÓĘŃ -]+$/ui'

zmienia się na jakieś znów fikuśne literki questionmark.gif?

OK, poradziłem sobie w ten sposób że każdy plik otworzyłem w notatniku i zapisywałem z utf8

teraz mam jeszcze jeden problem a mianowicie mam formularz rejestracyjny JQuery -> Ajax -> PHP -> bazada danych do której niestety nie wpadają już polskie znaki

w bazie kolumna od imienia jest utf8_unicode_ci zatem raczej nie w tym problem bo jak wprowadzę ręcznie to trzyma polskie znaki

jak sprawdzam jakie imię php odeśle (to co dostało) - odsyła już pozbawione polskich znaków tylko krzaki - zatem problem tkwi w tym czy w chwili wysłania do pliku php wysyła dobre znaki

do Ajaxa dodalem

encoding: "UTF-8",

contentType: "application/x-www-form-urlencoded; charset=UTF-8",

lecz nie pomaga

pytanie czy psuje się coś na poziomie wysyłania jeszcze po stronie strony czy otrzymywania w php

ok, w pliku php od razu po otrzymaniu POST imię - wszystko co plik otrzymał jest zapisywane do pliku textowego i już na tym etapie są krzaki czyli problem tkwi prawdopodobnie w chwili wysyłania do pliku danych POSTEM/Ajax

a co fając się jeszcze do podstaw, jak sprawdzam żeby wziąć zawartość inputa z imieniem i text() zawartość inputa/imię to imię jest prawidłowe więc chodzi raczej o wysłanie.
viking
nagłówki, set names itd. Było milion razy na forum , jest wytłumaczone znowu w mojej stopce.
mariolita
ale ja to już pozmieniałem natomiast w twoim artykule nie ma informacji jak to tyczy się do qjuery/ajax
viking
Jeśli wszystko pozmieniałeś na utf-8 to nie będzie żadnego problemu z ajaxem również. A ponieważ kodu albo strony żadnego nie podałeś to pozostaje wróżenie. Domyślnie wszystkie dane w POST jquery są wysyłane jako utf-8.
mariolita
hej mogę Wam wysłać wszystkie skrypty ale to bez sensu bo jest ich sporo a naprawdę są prost jak barszcz,

co już wiemy:

1. był problem z tym że po zapisywaniu pliku php polskie znaki zmieniały się w krzaki - naprawione
2. po włożeniu mysqli_set_charset($polaczenie,"utf8") - komórka Imię w tabeli jest całkiem pusta
3. wszystkie strony w headerach mają <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
4. Skrypty wszystkie php też zaczynają się header ("Content-Type: text / html; charset = utf-8 ");
5. Odpowiedź z pliku PHP Ajaxem przychodzi poprawna czyli z polskimi znakami.
6. Problem tkwi z wysłaniem do pliku php imienia z polskimi znakami.

Przykład wysyłania imienia (skrypt działa poprawnie - kilka rzeczy usunąłem bo i tak nie wpływają na działanie a nie chciałem Wam mieszać w głowie):

  1. $.ajax({
  2.  
  3. type: "POST",
  4.  
  5. url: "php/signup.php",
  6.  
  7. data: dataAjax,
  8.  
  9. contentType: "application/x-www-form-urlencoded;charset=UTF-8",
  10.  
  11. success: function(answerdata) {
  12.  
  13. $("#odpowiedz").html(answerdata);
  14.  
  15. if(answerdata == 'done') {
  16. ...
  17.  
  18. } else {
  19.  
  20. ...
  21. }
  22.  
  23. }
  24.  
  25. });



a plik php znów zaczyna się tak:

header ("Content-Type: text / html; charset = utf-8");

  1. if(isset($_POST["imie"]) && isset($_POST["email"])) { ...
viking
Cytat
2. po włożeniu mysqli_set_charset($polaczenie,"utf8") - komórka Imię w tabeli jest całkiem pusta


Najwyraźniej masz z tym fragmentem kodu coś nie tak.
mariolita
SZOK


Siedzę pare dni już nad tym, głowię się i nareszcie mi się udało, zadziałało - pięknie wszystkie polskie znaki trafiały do bazy danych. Wyłączyłem przeglądarkę, włączam (nic nie zmieniałem - zupelnie nic) i znów to samo - znów polskich znaków brak.

NO CO JESTTTTTTTTTTTTTTTTTTTTTTTTTTT?questionmark.gifquestionmark.gifquestionmark.gif

dobra strtolower() puszczał brzydkie bąki

zatem jak wyciągam przy logowaniu z bazy emaila lub imię to co dać zeby nie zważał na małe czy duże znaki?
nospor
Przestan naduzywac rozmiaru czcionek!!

Co do problemu:
http://php.net/manual/en/function.mb-strtolower.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.