Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Wyrażenia regularne - polskie znaki, ereg_replace
aurox
post 17.03.2007, 02:40:44
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 22.02.2007

Ostrzeżenie: (0%)
-----


Witam.

1) Logika ereg_replace -> zastąp wszystkie znaki, które nie należą do podanego zakresu, znakiem pustym (edytor forum dodał tu automatycznie znak \).
Następnie, jeśli user wpisał swoje imię z małej litery, funkcja ucfirst zmieni pierwsza literę na wielką.
Póżniej warunek, że imię musi mieć conajmniej 1 znak.

Problem polega na tym, że ereg_replace nie rozpoznaje, że litery ś, Ś, ź, Ź należą do zakresu. Są one zastępowane znakiem " ".

Jeśli zmienię zakres na [!@#$%^&] itd. litery ś, ź zostają, ale już funkcja ucfirst nie zmieni jej na wielką.

Gdzie szukać błędu? Co jest żle? Proszę o podpowiedź zorientowanych.

  1. <?php
  2. if (isset($_POST['registerName'])) {
  3. $_SESSION['registerName'] = $_POST['registerName'];
  4. $registerName = $_SESSION['registerName'];
  5. $registerName = ereg_replace('[^a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]', "", $registerName);
  6. $registerName = ucfirst($registerName);
  7.  
  8.  if (strlen($registerName) < 1 ) {
  9.  $registerNameInfo = " Popraw imię";
  10.  
  11.  } else {
  12.  $registerNameInfo = " OK";
  13.  
  14.  }
  15. }
  16. ?>


[EDIT]
W powyższym przykładzie kodowanie znaków było ustawione na ISO-8859-2, stąd przypuszczenie, że ereg_replace nie działa prawidłowo, ponieważ wskazane ISO nie obsługuje niektórych polskich znaków.
Podobnie nie zadziała funkcja ucfirst;

  1. <?php
  2. echo $ISO = ucfirst("xB6"); /*--- dla ISO-8859-2 wyświetli małą literkę ś ---*/
  3.  
  4. echo $UTF = ucfirst("xC5x9B"); /*--- dla UTF-8 wyświetli małą literkę ś ---*/
  5. ?>



...czyli lipa guitar.gif

Ten post edytował aurox 17.03.2007, 02:41:39
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:01