![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
W jaki sposób można wstawić zmienną w sam środek wyrażenia regularnego? Bo ponoć tak, zwyczajnie:
to nie wolno (i faktycznie, nie działa to u mnie prawidłowo). Dodam też, że $slowo oraz $tekst to ciągi tekstowe UTF-8, zawierające litery "egzotycznych" języków. Ponoć "escape meta chars", cokolwiek to jest, może tu pomóc. Dzięki, latet Ten post edytował latet 31.12.2005, 20:35:04 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zapewne chodzi o ta funkcje preg_quote" title="Zobacz w manualu php" target="_manual
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 0 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Radarek @ 2006-01-01 13:01:51) Zapewne chodzi o ta funkcje preg_quote" title="Zobacz w manualu php" target="_manual Hej, Narobiłes mi na chwilę nadziei, ale niestety ![]() Użycie funkcji preg_quote() absolutnie niczego nie zmieniło, zresztą - chyba nie mogło, bo ona modyfikuje tylko pewne znaki, których wcale nie ma w słowach, które testowałem. (Aha - przypomnę, że cały czas chodzi mi wyłącznie o szukanie słów w ciagach UTF-8!) Reasumując: Tylko te trzy poniższe działają dobrze (w sensie znajdują ciagi w dowolnym języku), ale przecież nie o to mi chodzi, bo ja muszę wyszukać tylko pełne słowa, a nie ciąg liter występujący w dowolnym sąsiedztwie.
Problemy zaczynają się, gdy wprowadzam parametr \b (lub \\b) a przecież taki mam cel - znaleźć pełne słowa. Wszystkie poniższe działają źle i wszystkie w taki sam sposób źle:
Złe działanie polega tu na 2 rzeczach: 1) w ogóle nie są znajdywane ciagi zawierające litery hebrajskie (choć przecież jest to taki sam UTF-8 jak i litery polskie, a polskie znajduje), 2) parametr \b nie działa prawidłowo - np. jeśli szukam tylko "w", to znajduje wyraz "żółw"! Nie znajduje natomiast wyrazów zaczynających się na "w". Dziwne. Testowalem też dodanie parametru u, ale to tylko pogarsza sprawę:
Wtedy ciągi zawierające choćby jedną polską literę nie są znajdowane. Przypomnę - preg_quote() niczego nie zmieniło. Wygląda chyba na to, że wyrażenie reg. z parametrem \b głupieje szukając w UTF-8. Próbowałem użyć funkcji niby stworzonych do UTF-8, ale... dla odmiany... żadne z poniższych nie działa wcale, tzn. w ogóle nic nie znajdzie, w żadnym przypadku, nawet gdy zapodam do odszukania ciąg zawierajacy wyłącznie litery łacińskie:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.07.2025 - 10:17 |