![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 181 Pomógł: 18 Dołączył: 19.04.2008 Ostrzeżenie: (10%) ![]() ![]() |
sproboj np. tak
w komentarzu jest jeden -?- wiecej co pozwala zatrzymywac sie na -.- pierwszej. CODE $do_przeszukania = "nie wyświetla wyrazów zakończonych polskim ogonkiem np. \"widział\" (ale np. ęóąśłżźćńA odróżnia). test."; $_search = "widział"; $xxx = "ĄŻŚŹĘĆŃÓŁążśźęćńół"; preg_match_all("/(".$_search .".*[".$xxx."]*?)\./i", $do_przeszukania, $dopasowanie); // ----- preg_match_all("/(".$_search .".*?[".$xxx."]*?)\./i", $do_przeszukania, $dopasowanie); echo "<pre>"; var_dump ($dopasowanie); echo "</pre>"; exit; |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 1 Dołączył: 10.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, ale
Kod "/^(".$szukane .".*?[".$xxx."]*?)\./ix" działa tak samo jak Kod "/^$szukane([^.]+)?/ix" czyli oprócz "robią" wyszukuje też "robiącymi". pozdrawiam stygma |
|
|
![]()
Post
#4
|
|
![]() 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. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 1 Dołączył: 10.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat("Kicok") \b oznaczające początek wyrazu zamień Na początku wyrazu nie ma problemów z ogonkami. Cytat("Kicok") Nie zapomnij też o modyfikatorze u na końcu wyrażenia. Pisałem o próbach zmiany kodowania na utf-8, żeby sprawdzić, czy może "\b" obsługuje utf-8, tekst jest w iso. Natomiast Cytat("Kicok") a \b oznaczające koniec wyrazu na: Kod (?![a-zA-Z0-9_ążśźęćńółĄŻŚŹĘĆŃÓŁ]) działa. Dzięki. pozdrawiam stygma Ten post edytował stygma 18.05.2008, 15:15:20 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 12:37 |