Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polskie znaki w wyrażeniach regularnych Perl
Forum PHP.pl > Forum > PHP
mikiroro
Witam,
robię właśnie program, który poprawia polskie znaki (zamienia np. zolty na żółty).
Najpierw zamienia taki ciąg na regexp:
Kod
/[zźż][oó][lł]ty/i

a potem szuka go w słowniku.
  1. print_r(preg_grep('/[zźż][oó][lł]ty/i',file('slownik.txt')));

I mi nie działa sad.gif

Proszę o pomoc.
Fifi209
Może zastanów się nad wyrażeniem...

Pokaż slownik.txt przynajmniej kawałek i opisz dokładniej swój problem.
l3l0
Spróbuj może tak:
  1. print_r(preg_grep('/[zźż][oó][lł]ty/iu',file('slownik.txt')));


http://www.php.net/manual/en/reference.pcr...n.modifiers.php
Modifikator "/u" powoduje że wzorzec jest traktowany jako utf8.
Jeśli nie zadziała podaj wersje PCRE z phpinfo

Pozdrawiam
mikiroro
I jest dobrze!
Dzięki, l3l0.
A oto mój skrypt:
  1. <?php
  2. $latin = array('a','c','e','l','n','o','s','z');
  3. $pl = array('[aą]','[cć]','[eę]','[lł]','[nń]','[oó]','[sś]','[zźż]');
  4.  
  5. $slowo = 'zolty';
  6. $regex = "/$slowo/iu";
  7. $regex = str_replace($latin, $pl, $regex);
  8. echo "$regex\n";
  9. print_r(preg_grep($regex, file('dict.txt')));
  10. ?>


A plik dict.txt to po prostu lista słówek, każde od nowej linii.
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.