Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Czy w ciągu znajdują się inne słowa niż w tablicy/oprócz tych w tablicy
Forum PHP.pl > Forum > Przedszkole
Szunaj85
Jak sprawdzić czy w zmiennej będącej ciągiem znajdują się inne wyrazy niż te w tablicy?
  1. $tablica = array(
  2. 'Ala ',
  3. 'ma ',
  4. 'kota.');
Np.
'Ala ma kota.' - nie znajdują się
'Ala ma kota. Kot ma Alę.' - znajdują się
Oczywiście kolejność wyrazów też ma znaczenie i może być inna.
'kota. ma Ala ' - nie znajdują się
melkorm
  1. if(strlen(trim(str_replace($tablica,'',$text))))
  2. {
  3. // są
  4. }
Szunaj85
Nie jestem pewien, ale Twój skrypt działa chyba odwrotnie niż chciałem.
melkorm
a chociaż przetestowałeś ? ... .
Szunaj85
Tak...
melkorm
Skrypt ma sprawdzać czy istnieją słowa które nie są zawarte w tablicy, a więc wycinamy słowa które występują w tekście i tablicy, po czym czyścimy z początku i końca białe spacje itp (w razie by coś zostało) i sprawdzamy długość tekstu i jeżeli nie jest pusty to wiadomo że wystąpiły jakieś znaki które nie są zawarte w tablicy.
Szunaj85
  1. if(strlen(trim(str_replace($tablica,'',$text))))
  2. {
  3. echo 'Są inne słowa niż w tablicy';
  4. }
Taki komunikat wyświetla mi kiedy nie ma innych słów niż w tablicy.
Na razie dałem 'zaprzeczenie' (!) i teraz działa dobrze. Mam nadzieję, że w dobrym miejscu je wpisałem.
Jeśli twój kod działa poprawnie być może przyczyna leży gdzie indziej. I tak mi już dużo pomogłeś. Później spróbuję poszukać przyczyny takiego działana kodu.
  1. if(!strlen(trim(str_replace($tablica,'',$text))))
  2. {
  3. echo 'Są inne słowa niż w tablicy';
  4. }
melkorm
Na logikę, czy sądzisz iż po wycięciu wszystkich słów z tekstu które znajdują się w tablicy string będąc pustym, będzie zawierać inne słowa niż w tablicy?

@edit

  1. $text = 'kota. ma Ala ';
  2. $tablica = array(
  3. 'Ala ',
  4. 'ma ',
  5. 'kota.');
  6. if(strlen(trim(str_replace($tablica,'',$text))))
  7. {
  8. echo 'są';
  9. }


Twój własny przykład.
Szunaj85
Cytat
Na logikę, czy sądzisz iż po wycięciu wszystkich słów z tekstu które znajdują się w tablicy string będąc pustym, będzie zawierać inne słowa niż w tablicy?
Jeśli cię dobrze zrozumiałem bazując na tym przykładzie co go podałeś to nie.
  1. //Nie ma innych słów
  2. $text = 'kota. ma Ala ';
  3. $tablica = array(
  4. 'Ala ',
  5. 'ma ',
  6. 'kota.');
  7. if(strlen(trim(str_replace($tablica,'',$text))))
  8. {
  9. echo 'są';
  10. }
Ale jeśli przykład wygląda tak:
  1. //Są inne słowa
  2. $text = 'Ala ma kota. Kot ma Alę.';
  3. $tablica = array(
  4. 'Ala ',
  5. 'ma ',
  6. 'kota.');
  7. if(strlen(trim(str_replace($tablica,'',$text))))
  8. {
  9. echo 'są';
  10. }
Twierdzisz, że twój kod działa poprawnie. Tak? Ok.
Wyskakuje komunikat gdy w stringu znajdują się inne słowa niż w tablicy. Więc do czego zmierzasz? Bo nie wiem jak rozumieć twojego posta.
melkorm
Cytat
Ale jeśli przykład wygląda tak:


No to dobrze wyświetla "są", bo są inne słowa snitch.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.