Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zliczanie kazdego slowa w zmiennej
Forum PHP.pl > Forum > PHP
Spyder
Witam

Mam zmienna $description ktora przenosi text potrzebuje pomocy w skrypcie ktory zliczy mi czestotliwosc wystepowania kazdego zlowa. Czy ktos wie jak sie do tego zabrac?

Dzieki
thek
str_word_count
Spyder
Funkcja ktora podales wyswietla slowa lecz nie ilosc ich wystepowania.
mat-bi
A może

  1. $ilosc = explode(' ', $description);
  2. $ilosc = count($ilosc);


questionmark.gif
Spyder
Nie o to chodzi...

jesli $description ='Hello my name is hello my name name';

Wynik

Hello => 2
Name => 3
My => 1
is =>1

Dzieki
binbash
Może tak,
  1. $words = explode(' ', $description);
  2. $return = array();
  3.  
  4. foreach($words as $word) {
  5. if(array_key_exists($word, $return)) {
  6. $return[$word]++;
  7. } else {
  8. $return[$word] = 1;
  9. }
  10. }
  11.  
Spyder
Cytat(binbash @ 14.03.2011, 16:02:50 ) *
Może tak,
  1. $words = explode(' ', $description);
  2. $return = array();
  3.  
  4. foreach($words as $word) {
  5. if(array_key_exists($word, $return)) {
  6. $return[$word]++;
  7. } else {
  8. $return[$word] = 1;
  9. }
  10. }
  11.  


Dobra robota, prawie idealnie ale lepiej dziala w polaczeniu z str_word_count

  1.  
  2. $words = str_word_count($getDescription, 1);
  3. $return = array();
  4.  
  5. foreach($words as $word) {
  6. if(array_key_exists($word, $return)) {
  7. $return[$word]++;
  8. } else {
  9. $return[$word] = 1;
  10. }
  11. }
  12.  
  13. echo '<pre>Result: '; print_r($return); echo '</pre>';
  14.  


Dzieki
cudny
Cytat(Spyder @ 14.03.2011, 14:54:05 ) *
Nie o to chodzi...

jesli $description ='Hello my name is hello my name name';

Wynik

Hello => 2
Name => 3
My => 1
is =>1

Dzieki


Trzymaj gotowca.
Niestety nie zadziała to jeśli będzie 'hellomy my name is hello my name name' bo hello i my bedzie o raz wiecej tongue.gif ale to już sam kombinuj, ja nie mam czasu w pracy - wtedy ratują tylko preg_match_all();
  1. $description = strtolower('Hello my name is hello my name name');
  2. $desc = array_unique(explode(' ',$description));
  3. foreach($desc as $dd) {
  4. $result[$dd] = substr_count($description, $dd);
  5. }
  6. echo '<pre>';
  7. print_r($result);
  8. echo '</pre>';
thek
str_word_count oczywiście podałem jako wstęp do liczenia, a nie gotowca smile.gif Miał mi tylko znaleźć unikatowe wyrazy. Najpierw zdanie trzeba potraktować zmniejszaniem liter. To o czym większość zapomina to podejście do znaków interpunkcyjnych. Nie bez powodu podałem te funkcję, bo dzielenie po spacjach da fałszywe rezultaty. Przykład? Wybaczcie, że zdanie nie będzie trzymać się kupy, ale chcę tylko zasygnalizować problem, jakiego niektórzy nie widzą.
"To jest piękne! Ale co piękne, nie musi być układne i piękne. By piękne takie było musi być ułożone" i powiedz cudny co ze słowem piękne. Wystąpi jako 4 osobne przy dzieleniu po spacji, bo jako: "piękne!","piękne,", "piękne.", "piękne". Dlatego jeśli już chcesz to dobrze zrobić, musisz nieco bardziej jeszcze się wysilić.
cudny
Cytat(thek @ 14.03.2011, 15:55:14 ) *
str_word_count oczywiście podałem jako wstęp do liczenia, a nie gotowca smile.gif Miał mi tylko znaleźć unikatowe wyrazy. Najpierw zdanie trzeba potraktować zmniejszaniem liter. To o czym większość zapomina to podejście do znaków interpunkcyjnych. Nie bez powodu podałem te funkcję, bo dzielenie po spacjach da fałszywe rezultaty. Przykład? Wybaczcie, że zdanie nie będzie trzymać się kupy, ale chcę tylko zasygnalizować problem, jakiego niektórzy nie widzą.
"To jest piękne! Ale co piękne, nie musi być układne i piękne. By piękne takie było musi być ułożone" i powiedz cudny co ze słowem piękne. Wystąpi jako 4 osobne przy dzieleniu po spacji, bo jako: "piękne!","piękne,", "piękne.", "piękne". Dlatego jeśli już chcesz to dobrze zrobić, musisz nieco bardziej jeszcze się wysilić.


I właśnie dla tego napisałem klauzurę, że nie biorę odpowiedzialności za cudowność tongue.gif skryptu:
cyt. mojego poprzedniego postu "Niestety nie zadziała to jeśli będzie 'hellomy my name is hello my name name' bo hello i my bedzie o raz wiecej tongue.gif ale to już sam kombinuj, ja nie mam czasu w pracy - wtedy ratują tylko preg_match_all();"

Poza tym gotowiec mój nie wyświetli się cudownie przy użyciu znaków diakrytycznych, które każdy wie że nie działa strtolower i strtoupper smile.gif
Trzeba tablicy smile.gif dla każdego z krajów z osobna i w ogóle biggrin.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.