Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wyszukanie słowa bez wyrażeń regularnych
Forum PHP.pl > Forum > Przedszkole
shreker
Najprościej znaleźć określone słowo w stringu przy pomocy strpos, ale ta funkcja w przykładowym stringu np : "Jakieś przykładowe zdanie z wyszukiwanym_wyrazem w tekście i innym wyrazem." jeżeli szukamy słowa "wyrazem" wyświetli nam zarówno "wyrazem" jak i "wyszukiwanym_wyrazem" a chodzi o to żeby znaleźć tylko słowo "wyrazem".
Mam więc pytanie czy da się to zrobić bez wyrażeń regularnych - przy pomocy funkcji?
Sprawa jest o tyle utrudniona, że muszę przeszukać kilka plików pod kątem występowania określonych słów (z array), mam już gotową pętlę, ale wystąpił powyższy problem.
thek
Może sprawdź jaki jest znak na pozycji wcześniejszej, o ile jest większa od 0. No i dla pewności także za ostatnią literą wyrazu smile.gif
KsaR
#1:


if (false!==stripos($string,' '.$word) ||false!==stripos($string,$word.' ')) # @skie, edit... Pierwsze co teraz wstałem i pomyślałem o tym.
{
# ...
}


# 2:
  1. $stringArr=explode(' ',mb_strtolower($string,'UTF-8')); /* to powinno być za pętlą, gdzieś odrazu za zmienna z textem */
  2. if (in_array($word,$stringArr))
  3. {
  4. #...
  5. }


Nie testowałem ale powinno działać.

$string - string w którym ma szukać.
$word - aktualne słowo.
Skie
@ksar Twoje rozwiązanie niestety jest błędne - wyraz "wyszukiwanywyraz" z przykadłowego zdania z pierwszego postu zostanie znalezione, bo po "wyraz" jest spacja. Dobry rozwiązaniem jest to, które opisał @thek, aczkolwiek z drobną zmianą - szukamy "wyraz", bez spacji ani niczego, następnie sprawdzamy znak przed i po, by znaleźć char inny niż [a-zA-Z] + polskie znaki, ponieważ nie tylko spacja, ale również tabulacja lub znaki przestankowe mogą tam się znaleźć. Jeśli warunek zostanie spełniony, wtedy znaczy, że jest to osobny wyraz, jeśli nie jest częścią czegoś większego.
thek
@Skie ma rację. Zapomniałem o tym napisać w swoim poście. Musisz wziąć pod uwage polską gramatykę i interpunkcję by możliwe przypadki zawrzeć/wykluczyć. Wyrażenie regularne byłoby prostsze by te warunki przed i po określić, ale skoro nie możesz, to musisz wpierw określić "otoczenie" wyrazu w jakim się może znaleźć w zdaniu.
Pyton_000
Sztuka dla sztuki?
thek
Albo brak obsługi pcre na serwerze, bo ktoś miał taki kaprys i skompilował takie cudo. Ewentualnie ustawił te funkcje jako niedostępne biggrin.gif
memory
jak będzie wyglądał RegExp ? smile.gif
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.