Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Polskie znaki w wyrażeniach regularnych Perl
mikiroro
post 1.02.2010, 20:33:22
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 3.01.2010

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


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.

Ten post edytował mikiroro 1.02.2010, 20:33:50
Go to the top of the page
+Quote Post
Fifi209
post 1.02.2010, 20:40:54
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Może zastanów się nad wyrażeniem...

Pokaż slownik.txt przynajmniej kawałek i opisz dokładniej swój problem.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
l3l0
post 2.02.2010, 09:00:00
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 16
Dołączył: 24.07.2009
Skąd: Gdańsk

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


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

Ten post edytował l3l0 2.02.2010, 09:00:23
Go to the top of the page
+Quote Post
mikiroro
post 7.02.2010, 18:57:08
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 3.01.2010

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


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.
Go to the top of the page
+Quote Post

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: 25.05.2025 - 12:46