Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak sprawdzić czy ciąg występuje jako całe słowo?, Wyrażenia regularne na ciągach UTF-8
latet
post 31.12.2005, 14:20:42
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 2.10.2005

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


Witam,

Muszę napisać wyrażenia regularne (lub funkcję), które sprawdzi czy dany ciąg znaków występuje w przeszukiwanym dużym tekście jako pełny wyraz.

Czyli jeśli szukamy ciagu "przy" to interesuje nas słowo "przy", a nie słowo "przypadek".

Myślę, że najprościej będzie zdefiniować z czym może sąsiadować taki ciąg, aby był uznany za pełny wyraz.

Do głowy mi przychodzi, że sąsiadować może z:
- początkiem stringu
- końcem stringu
- spacjami oczywiście, w tym innymi znakami tego rodzaju, np. \t, \n, twarda spacja itp
- przecinkiem
- kropką
- średnikiem
- dwukorpkiem
- apostrofami, cudzysłowiami
- nawiasami wszelkiego typu
- wszelkimi znaczakmi, kóre na klawiaturze wpisuje się przez SHITF-cyfra
- pozostałymi znaczkami typu + - = \ / ? ~
- cyframi (opcjonalnie)

Ta lista jest oczywiście umowna i do ustalenia, probelm mam z tym jak to w ogóle napisać? Pewnie funkcja mb_eregi() będzie tu sendem sprawy.

Trudności mam dwie:
1) nie "czuję" wyrażeń regularnych kompletnie sadsmiley02.gif
2) teksty, które mam obsłużyć są w UTF-8, i są w nich egzotyczne języki, tak więc odpada zdefiniowanie z czym szukany ciąg nie może sąsiadować. Trzeba określić z czym może - i to określić to w UTF-8.

Plik .php jest jako taki także kodowany w UFT-8.

Wielkie dzięki!

latet

Ten post edytował latet 31.12.2005, 14:23:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
latet
post 1.01.2006, 17:28:13
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 2.10.2005

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


Cytat(mike_mech @ 2006-01-01 15:45:33)
Połączenie funkcji str_word_count() i array_search() da Ci rozwiązanie.

Nie jest to może najlepszu sposób, bo najlepiej użyć wrażeń regularnych, ale ich nie znam smile.gif

Przetestuję (z rozpaczy), ale jest mały kruczek w fukcji str_word_count():
Cytat
For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with "'" and "-" characters.


A z próbami ustawiania setlocale() mam doświadczenia małe i bardzo złe...

Jak to ustawić w tym przypadku, skoro teksty w ktorych szukam są wielojęzyczne (aczkolwiek wszystko jest w UTF-8)?

Pozdrawiam,

latet
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 - 17:19