Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tablice - wyświetlenie (top) zdań dla określonych słów
Forum PHP.pl > Forum > Przedszkole
Malinaa
Witam,
mamy tekst, z którego utworzono tablice słów i tablice zdań.

Jak znaleźć i wybrać z tablicy zdań te zdania, w których wystepują słowa z tablicy słów.
Wymagane jest wybranie kilku zdań o njawyższej liczbie wystąpień słów.

Tablica słów jest już policzona (i posortwana)

  1. <?php
  2. $tekst = 'Dlugi tekst... Ala ma kota. Wiele slow i zdan.';
  3. $tablica_slow = explode(" ", $tekst); // ?
  4. $tablica_policzone = array_count_values($tablica_slow);
  5. $tablica_zdania = explode(".", $tekst); // ?
  6.  
  7. foreach($tablica_zdania as $klucz_zdania => $zdanie) {
  8. $top_zdania = $top_zdania . $zdanie; // ?
  9. }
  10. ?>


Potrzebna pomoc? questionmark.gif
memory
  1. <?php
  2. foreach($tablica_zdania as $klucz_zdania => $zdanie) {
  3. $mystring =$zdanie;
  4.  
  5.  
  6. $findme   = 'Wiele';
  7. $pos = strpos($mystring, $findme);
  8.  
  9. if ($pos === false) {
  10.    echo "";
  11. }
  12.  
  13. else
  14.  
  15. {
  16.  
  17.    echo "'$mystring'";
  18.    
  19. }
  20. ?>


strpos" title="Zobacz w manualu PHP" target="_manual
Malinaa
Teraz jest coś takiego:

  1. <?php
  2. // Slowa kluczowe - w tej tablicy jest odwrocona pozycja klucza!
  3. foreach($tablica_policzone as $klucz => $slowa) {
  4.  
  5. while ( list($klucz_zdan, $wartosc_zdan) = each($tablica_zdan) ) {
  6.  $znajdz = strpos($wartosc_zdan, $klucz);
  7.  if ($znajdz !== false) {
  8.   $zdania = $zdania . "/$klucz($znajdz) ->$wartosc_zdan/ ";
  9.  }
  10. }
  11.  
  12. $top_slowa = $top_slowa . $klucz;
  13. }
  14.  
  15. $top_zdania = $top_zdania . $zdania;
  16. ?>


1. Problem jest taki, że w tej chwili wyszukuje tylko dla pierwszwgo wystąpienia slowa ($tablica_policzone[slowo1]), jeżeli w tej tablicy jest więcej słów nie znajduje kolejnych zdań, w których są słowa ($tablica_policzone[slowo2...]).
2. strpos() wyszukuje tylko pierwsze wystąpienie słowa w zdaniu, a tu potrzebne jest sprawdzenie całegoi tekstu i określenie, w którym zdaniu znajduje się najwięcej słow (top słów z $tablicy policzone) i wyświetlenie top zdan z $tablica_zdan.

Tablice przykladowe:

$tablica_policzone = Array ( [slowo1] => 6 [slowo2] => 5 [slowo3] => 3 [slowo4] => 3 [slowo5] => 3 [-] => 3 [slowo6] => 2 [slowo7] => 1 )

$tablica_zdan = Array ( [0] => zdanie1 [1] => zdanie2 [2] => zdanie3 )

Jak napisać ten skrypt?
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.