Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]wyszukanie słowa bez wyrażeń regularnych
shreker
post
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.
Go to the top of the page
+Quote Post
thek
post
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)
Go to the top of the page
+Quote Post
KsaR
post
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:
  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.

Ten post edytował Ksar 18.07.2015, 13:37:43
Go to the top of the page
+Quote Post
Skie
post
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
Go to the top of the page
+Quote Post
thek
post
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.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Sztuka dla sztuki?
Go to the top of the page
+Quote Post
thek
post
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)
Go to the top of the page
+Quote Post
memory
post
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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 22:22