Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne, a znaki polskie
Najki
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Witam.

Próbowałem już różnych sposobów, również zaczerpniętych z manual'a, szukałem na forum i o dziwo nic nie znalazłem takiego, co wreszcie by mi pomogło. Próbowałem m.in.

  1. <?php
  2. preg_match('#^[a-z0-9_-.:;x{b1}x{e6}x{ea}x{b3}x{f1}x{f3}x{b6}x{bc}x{bf}]$#imxDX', $sText);
  3. ?>


  1. <?php
  2. różne kombinacje modyfikatorów: imxDX
  3. ?>


  1. <?php
  2. setlocale (LC_ALL, 'pl_PL');
  3. $bolMatch = preg_match("/^[[:alpha:]]+$/", $strData);
  4. ?>


  1. <?php
  2. preg_match('#^[a-z0-9_-.:;ąćęłńóśźż]$#i');
  3. ?>


Żadne z powyższych rozwiązań mi nie pomogło i wyrażenie nadal nie przepuszcza polskich liter.

Proszę o pomoc.

Pozdrawiam, Najki.

Czy ten problem jest tak trudny, że nikt nie odpowiada? Może ten problem jest tak banalny, że nikt nie odpowiada? A może ten problem jest niemożliwy i coś jest skopane z moim wampserver'em na localhost'cie ?

Powiedzcie cokolwiek co może mi pomóc, mam krótki deadline z projektem.

Ten post edytował Najki 25.10.2006, 12:57:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
siemakuba
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


Ano widzisz, wszystko jasne :)
Po pierwsze, to co podajesz w swoim wyrażeniu to zakres znaków jaki ma znaleźć się w badanym stringu, a zakres należy podać w nawiasie kwadratowym. Stąd, pierwsza zmiana:
  1. <?php
  2. preg_match('#^[a-z0-9_-.:!?;ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]$#ismU', $sText);
  3. ?>

Dalej, nie użyłeś żadnego operatora powtórzenia, więc wyrażenie w takiej formie zadziała tylko dla jednego znaku. Stąd zmiana:
  1. <?php
  2. preg_match('#^[a-z0-9_-.:!?;ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]*$#ismU', $sText);
  3. ?>

No i raczej nie potrzebujesz wszystkich modyfikatorów, zakładam, że wtsarczy s i i (ewentualnie jeszcze m). Ostateczna wersja:
  1. <?php
  2. preg_match('#^[a-z0-9_-.:!?;ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]*$#is', $sText);
  3. ?>


edit: i musisz jeszcze zastąpić znak - na \- -- jest on znakiem specjalnym wewnątrz nawiasów kwadratowych.

pozdr.

Ten post edytował siemakuba 26.10.2006, 09:23:11
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 13:02