2017-02-21 5 views
0

Ich drucke eine Zeichenfolge, die HTML-Inhalt von einer bestimmten URL enthält. Was ich versuche, ist herauszufinden, wie viele Wörter innerhalb der Zeichenfolge sind und wie oft sie erscheinen.Anzahl der Wörter in einem String zählen PHP

Zum Beispiel:

heute | 1

Wie | 1

Hallo | 1

Code:

$string = "Hello how are you today" 
+0

Ich bin nicht sicher, was Ihr Code hat mit Ihrer Frage zu tun, aber man könnte versuchen, [ 'str_split()'] (http://php.net/manual/en/function.str-split.php) um es auf Leerzeichen zu teilen, dann über das Array zu schleifen und die Wörter als Schlüssel in einem anderen Array zu verwenden, jedes Mal inkrementierend. Wenn Sie sich an einer beliebigen Wortgrenze aufteilen wollen, verwenden Sie ['preg_split()'] (http://php.net/manual/en/function.str-split.php) und teilen Sie sie auf '\ b'. Direkt von meinem Kopf. – alanlittle

Antwort

0

nehmen Ihre $ cResult als Eingang:

$word_counts = []; 

// remove scripts and styles completely, then strip tags 
$cResult = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $cResult); 
$cResult = preg_replace('#<style(.*?)>(.*?)</style>#is', '', $cResult); 
$cResult = strip_tags($cResult); 

// strip all characters that are not letters: 
$word_array_raw = explode(' ',preg_replace('/[^A-Za-z ]/', ' ', $cResult)); 

// loop through array: 
foreach ($word_array_raw as $word) { 
    $word = trim($word); 
    if($word) { 
     isset($word_counts[$word]) ? $word_counts[$word]++ : $word_counts[$word] = 1; 
    } 
} 

// Array with all stats sorted in descending order: 
arsort($word_counts); 

// Output format you wanted: 
foreach ($word_counts as $word=>$count) { 
    echo "$word | $count<br>"; 
} 

Hoffe, es hilft

+0

Gibt es eine Möglichkeit, HTML-Tag-Namen aus dem Ergebnis zu entfernen? – user7588392

+0

hinzugefügt strip_tags – paulz

+0

Ich habe das versucht. Das hat einfach nur die Klammern entfernt. Ich habe immer noch das Wort selbst zurückgelassen. Zum Beispiel getElementById. – user7588392

0

Etwas wie folgt aus:

$s = "lorem ipsum dolor sit amet, consectetur adipiscing elit, sit sed do lorem eiusmod tempor"; 
    $w = preg_split('=[^\w]=', $s, NULL, PREG_SPLIT_NO_EMPTY); 
    $words = []; 

    foreach ($w as $word) { 
    if (!isset($words[$word])) $words[$word] = 0; 
    $words[$word]++; 
    } 
    print_r($words); 

Ausgang:

Array 
(
    [lorem] => 2 
    [ipsum] => 1 
    [dolor] => 1 
    [sit] => 2 
    [amet] => 1 
    [consectetur] => 1 
    [adipiscing] => 1 
    [elit] => 1 
    [sed] => 1 
    [do] => 1 
    [eiusmod] => 1 
    [tempor] => 1 
) 

Ist das, was Sie suchen?

Verwandte Themen