• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z literką 'ó' - PHP

Object Storage Arubacloud
0 głosów
2,407 wizyt
pytanie zadane 18 października 2016 w PHP przez Qita Nowicjusz (160 p.)

Witam,

tworzę właśnie malutki portal i napotkałem pewien problem. Otóż napisałem sobie funkcję:

function lower_latin($string) {
	$polish_chars = array(' ', 'ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż');
	$latin_chars = array('_', 'a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z');
	$string = mb_strtolower($string, 'UTF-8');
	$string = str_replace($polish_chars, $latin_chars, $string);
	return $string;
}

Ma ona za zadanie zamienić string'a na łańcuch małych liter bez polskich znaków oraz z znakami '_' zamiast spacji. Przykładowo łańcuch: AbĆef ogsłÓc - ma zamienić na: abcef_ogsloc.

Gdy pobieram z bazy danych jakąś wartość, np.: 'Wilczór' to po przepuszczeniu przez funkcję prawidłowo zostaje on zamieniony na ciąg 'wilczor'. Niestety gdy pobieram jakąś wartość poprzez formularz i nastepnie przepuszczam ją poprzez funkcję to zamienia ona wszystkie znaki na podane odpowiedniki poza literką 'ó'. Efekt dla powyższego były następujący (gdy wprowadzam w formularzu AbĆef ogsłÓc): abcef_ogslóc. W bazie literka 'ó' zapisuje się jako 'ó'. Co może być powodem? Oczywiście UTF-8 bez BOM wszędzie ustawione.

komentarz 19 października 2016 przez xandros Nałogowiec (29,450 p.)
if(!empty($_POST)){
    echo '<pre>';
    var_dump($_POST, getallheaders()); 
    die();
}

i wklej, co ci wyplulo po wysłaniu formularza

komentarz 19 października 2016 przez Qita Nowicjusz (160 p.)
array(7) {
  ["name"]=>
  string(5) "Nazwa"
  ["description"]=>
  string(4) "Opis"
  ["place"]=>
  array(1) {
    [0]=>
    string(2) "11"
  }
  ["weakness"]=>
  array(1) {
    [0]=>
    string(1) "5"
  }
  ["resistance"]=>
  array(1) {
    [0]=>
    string(1) "3"
  }
  ["alchemy"]=>
  array(1) {
    [0]=>
    string(1) "2"
  }
  ["submit"]=>
  string(5) "Dodaj"
}
array(11) {
  ["Host"]=>
  string(9) "localhost"
  ["User-Agent"]=>
  string(72) "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0"
  ["Accept"]=>
  string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
  ["Accept-Language"]=>
  string(23) "pl,en;q=0.7,en-US;q=0.3"
  ["Accept-Encoding"]=>
  string(13) "gzip, deflate"
  ["Referer"]=>
  string(49) "http://localhost/witcher_beasts/dodawanie-potwora"
  ["Cookie"]=>
  string(36) "PHPSESSID=tcdml32l49ges8hescnd0q6734"
  ["Connection"]=>
  string(10) "keep-alive"
  ["Upgrade-Insecure-Requests"]=>
  string(1) "1"
  ["Content-Type"]=>
  string(71) "multipart/form-data; boundary=---------------------------66602364312135"
  ["Content-Length"]=>
  string(6) "987890"
}

 

komentarz 19 października 2016 przez xandros Nałogowiec (29,450 p.)
nie widze, byś wysyłał jakieś pole ze znakiem "Ó"

3 odpowiedzi

0 głosów
odpowiedź 19 października 2016 przez bartolinciu Dyskutant (7,580 p.)
'&oacute' jest encją html (mam nadzieję, że dobrze to napisałem) w kodzie nie daje ona żadnego efektu, a podczas qyświetlania zastępuje znak specjalny taki jak '<' czy ';'. Jak przekazujesz dane z formularza do skryptu? Jeśli przez get to może tam coś działa nie tak jak trzeba.
komentarz 19 października 2016 przez Qita Nowicjusz (160 p.)
edycja 19 października 2016 przez Qita
Wiem, że jest to encja HTML, problem polega na czymś innym. Dane są przesyłane metodą POST natomiast problem występuje jedynie przy literce 'ó'.

Jakieś inne pomysły?
0 głosów
odpowiedź 19 października 2016 przez maly Nałogowiec (37,190 p.)
Charset dla bazy danych jest ustawiony na utf-8?
komentarz 19 października 2016 przez Qita Nowicjusz (160 p.)
Napisałem w pierwszym poście, UTF-8 wszędzie.
0 głosów
odpowiedź 19 października 2016 przez Qita Nowicjusz (160 p.)
Witam,

aż wstyd mi się przyznać ale zapomniałem, że w funkcji walidującej dane użyłem funkcji htmlentities...

Taki błąd!

Dziękuję za pomoc :)

Podobne pytania

0 głosów
1 odpowiedź 457 wizyt
0 głosów
0 odpowiedzi 992 wizyt
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 20 listopada 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...