![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
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 (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
#1:
if (false!==stripos($string,' '.$word) ||false!==stripos($string,$word.' ')) # @skie, edit... Pierwsze co teraz wstałem i pomyślałem o tym. { # ... } # 2:
Nie testowałem ale powinno działać. $string - string w którym ma szukać. $word - aktualne słowo. Ten post edytował Ksar 18.07.2015, 13:37:43 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
@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.
Ten post edytował Skie 18.07.2015, 06:42:37 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
@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.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Sztuka dla sztuki?
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Albo brak obsługi pcre na serwerze, bo ktoś miał taki kaprys i skompilował takie cudo. Ewentualnie ustawił te funkcje jako niedostępne (IMG:style_emoticons/default/biggrin.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) ![]() ![]() |
jak będzie wyglądał RegExp ? (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 22:22 |