Thread View: pl.comp.lang.php
9 messages
9 total messages
Started by jivanmukta
Thu, 19 Feb 2015 19:04
polskie ctype_alnum(), ctype_alpha()
Author: jivanmukta
Date: Thu, 19 Feb 2015 19:04
Date: Thu, 19 Feb 2015 19:04
12 lines
1493 bytes
1493 bytes
<?php
setlocale(LC_ALL, 'pl_PL');
var_dump(ctype_alnum('ó'));
var_dump(ctype_alpha('ó'));
zwraca mi
bool(false) bool(false)
a ja bym chciał
bool(true) bool(true)
Żadnych strposów ani regexpów pisać nie chcę, bo będę przerabiał aplikację na międzynarodową.
Proszę o podpowiedź. Z góry dziękuję.
Re: polskie ctype_alnum(), ctype_alpha()
Author: Borys Pogoreło
Date: Thu, 19 Feb 2015 21:59
Date: Thu, 19 Feb 2015 21:59
12 lines
1198 bytes
1198 bytes
Dnia Thu, 19 Feb 2015 11:04:24 -0800 (PST), jivanmukta@poczta.onet.pl napisał(a): > Żadnych strposów ani regexpów pisać nie chcę, bo będę przerabiał > aplikację na międzynarodową. Dlaczego ja mam wrażenie, że znów próbujesz zrobić coś, czego nie powinieneś? Gdzie konkretnie chcesz to sprawdzać? -- Borys Pogoreło borys(#)leszno,edu,pl
Re: polskie ctype_alnum(), ctype_alpha()
Author: jivanmukta
Date: Fri, 20 Feb 2015 04:34
Date: Fri, 20 Feb 2015 04:34
18 lines
1990 bytes
1990 bytes
W walidacji server-side:
public function setAnnouncementRules(array $vulgarWords) {
...
array('client_name', 'nazwa / imię i nazwisko', 'trim|validate_name|max_length[60]'),
...
}
public function validate_name($val) {
for ($i = 0, $len = mb_strlen($val); $i < $len; $i++) {
$c = $val[$i];
if (!ctype_alnum($c) && !ctype_space($c) && $c != '-' && $c != '/') {
$this->set_message('validate_name', "Niepoprawny znak '$c' - dozwolone litery, cyfry, odstępy, myślik i ukośnik.");
return FALSE;
}
}
return TRUE;
}
Re: polskie ctype_alnum(), ctype_alpha()
Author: jivanmukta
Date: Fri, 20 Feb 2015 09:01
Date: Fri, 20 Feb 2015 09:01
17 lines
2134 bytes
2134 bytes
Tymczasowo napisałem tak:
define('LETTERS', 'abcdefhjijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZąćęłńóśźżĄĆĘŁŃÓŚŹŻ');
public function validate_name($val) {
for ($i = 0, $len = mb_strlen($val); $i < $len; $i++) {
$c = $val[$i];
if (strpos(LETTERS, $c) === FALSE && !ctype_digit($c) &&
!ctype_space($c) && $c != '-' && $c != '/') {
$this->set_message('validate_name', "Niepoprawny znak '$c' - dozwolone litery, cyfry, odstępy, myślik i ukośnik.");
return FALSE;
}
}
return TRUE;
}
ale nie podoba mi się to rozwiązanie, bo przy modyfikacji aplikacji na międzynarodową (co planuje mój zleceniodawca) będę musiał hardcodować wszystkie alfabety.
Re: polskie ctype_alnum(), ctype_alpha()
Author: Borys Pogoreło
Date: Fri, 20 Feb 2015 13:21
Date: Fri, 20 Feb 2015 13:21
14 lines
1446 bytes
1446 bytes
Dnia Fri, 20 Feb 2015 01:01:26 -0800 (PST), jivanmukta@poczta.onet.pl napisał(a): > ale nie podoba mi się to rozwiązanie, bo przy modyfikacji aplikacji na > międzynarodową (co planuje mój zleceniodawca) będę musiał hardcodować > wszystkie alfabety. Ciepło, ciepło. A teraz odpowiedz sobie jeszcze na pytanie czemu Hans Müller mieszkający w Polsce, z polskim obywatelstwem, nie mógłby się zarejestrować? -- Borys Pogoreło borys(#)leszno,edu,pl
Re: polskie ctype_alnum(), ctype_alpha()
Author: jivanmukta
Date: Fri, 20 Feb 2015 15:18
Date: Fri, 20 Feb 2015 15:18
3 lines
1723 bytes
1723 bytes
A da się sprawdzić czy znak $c jest w ogóle literą (tzn. dowolnego alfabetu)? Dlaczego ctype_alpha() zwraca false dla 'ó'? setlocale(LC_ALL, 'pl', 'pl_PL', 'pl_PL.UTF-8', 'plk', 'polish', 'Polish'); nie pomaga...
Re: polskie ctype_alnum(), ctype_alpha()
Author: jivanmukta
Date: Fri, 20 Feb 2015 16:39
Date: Fri, 20 Feb 2015 16:39
1 lines
1617 bytes
1617 bytes
Chyba oleję problem liter, w końcu klient może chcieć wprowadzić jako swoją nazwę moja_firma.pl - więc '_' i '.' powinienem też akceptować.
Re: polskie ctype_alnum(), ctype_alpha()
Author: Borys Pogoreło
Date: Fri, 20 Feb 2015 20:34
Date: Fri, 20 Feb 2015 20:34
19 lines
1765 bytes
1765 bytes
Dnia Fri, 20 Feb 2015 07:18:30 -0800 (PST), jivanmukta@poczta.onet.pl napisał(a): > A da się sprawdzić czy znak $c jest w ogóle literą (tzn. dowolnego alfabetu)? Dlaczego ctype_alpha() zwraca false dla 'ó'? > setlocale(LC_ALL, 'pl', 'pl_PL', 'pl_PL.UTF-8', 'plk', 'polish', 'Polish'); > nie pomaga... Ale PO CO? Co drugie Twoje pytanie tutaj to jakiś sztucznie stworzony problem, na który znajdujesz jeszcze gorsze rozwiązanie. Jeśli tę energię przeznaczysz na fazę projektową, to wszystkim to wyjdzie na zdrowie. Co do pytania: bo PHP i funkcje korzystające z locale to jest jakieś nieporozumienie. -- Borys Pogoreło borys(#)leszno,edu,pl
Re: polskie ctype_alnum(), ctype_alpha()
Author: jivanmukta
Date: Mon, 23 Feb 2015 08:36
Date: Mon, 23 Feb 2015 08:36
5 lines
1981 bytes
1981 bytes
> Co drugie Twoje pytanie tutaj to jakiś sztucznie stworzony problem, na > który znajdujesz jeszcze gorsze rozwiązanie. Jeśli tę energię przeznaczysz > na fazę projektową, to wszystkim to wyjdzie na zdrowie. Przepraszam Cię, masz rację. Ostatnio zrobiłem się niecierpliwy i nerwowy, bo za mało odpoczywam.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads