Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Regex znak końca wyrazu, Problem z polskimi znakami
stygma
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 10.11.2007

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


$szukany - szukany wyraz z input formularza POST
Kod
preg_match_all("/^$szukany\b([^.]+)?/ix",$do_przeszukania,$dopasowanie,PREG_OFFSET_CAPTURE);

Chodzi o wyszukiwanie wyrazu(ów) z pierwszych wyrazów tekstów pobranych z bazy i wyświetlanie go z pozostałą częścią zdania aż do kropki (kropka nie musi być wyświetlana) kończącej pierwsze zdanie tekstu.
Wyraz ten może być zakończony kropką, wtedy tylko on zostanie wyświetlony jako $dopasowanie, lub być pierwszym wyrazem zdania, a po nim może być spacja, przecinek, dwukropek, średnik itp. a dalej reszta zdania.
Regex
Kod
"/^$szukany\b([^.]+)?/ix"

nie odróżnia, nie wyświetla wyrazów zakończonych polskim ogonkiem np. "widział" (ale np. ęóąśłżźćńA odróżnia).
Bez znaku końca wyrazu (to chyba asercja, czy jakośtam) "\b"
Kod
"/^$szukany([^.]+)?/ix"

działa poprawnie, ale też wyszukuje wyrazy, w których skład wchodzi wyraz szukany np. "widziałem", a tego nie ma robić. Próbowałem ustawiać mb_internal_encoding i mb_regex_encoding na iso-8859-2, czy utf-8, ale nie pomaga.

Apache/2.2.6 na localhost, php 5.1.6, mysql-5.0.27-1.

Pomóżta chłopaki, co?

pozdrawiam stygma
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


\b oznaczające początek wyrazu zamień na:
Kod
(?=[a-zA-Z0-9_ążśźęćńółĄŻŚŹĘĆŃÓŁ])


a \b oznaczające koniec wyrazu na:
Kod
(?![a-zA-Z0-9_ążśźęćńółĄŻŚŹĘĆŃÓŁ])




Nie zapomnij też o modyfikatorze u na końcu wyrażenia.
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: 4.10.2025 - 21:48