Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Regex znak końca wyrazu
Forum PHP.pl > Forum > PHP
stygma
$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
cbagov
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;
stygma
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
Kicok
\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.
stygma
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
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.