2016-12-23 4 views
0

Ich habe einen Absatz. Der Absatz enthält normale Wörter und enthält auch einige Links. Dies ist zum Beispiel:Zählen Sie jedes Wort auf Whitespace PHP

@zzz http://pbs.xx.com/xxx/x/xx_xx.jpg RT @yyyy_y: Foto Bareng zx, vc: Politik Boleh Beda Tapi Silaturahim Jalan Terus https://er.dfo/gffggf 

Was ich brauche, ist jedes Wort auf weißen Platz Basis zu zählen. Wenn also ein Link vorhanden ist, wird dieser Link als 1 Wort gezählt.

So wird das Ergebnis so aussehen: @zzz = 1, http://pbs.xx.com/xxx/x/xx_xx.jpg = 1, RT = 1 @yyyy_y: = 1, foto = 1, Bareng = 1

Und so weiter ..

Ist es möglich? Wie ?

+2

Was ist '$ words = explode (““, $ string)'? – Pipe

+0

Vielleicht kann dieser vorherige Beitrag helfen: http://stackoverflow.com/questions/1792950/explode-string-by-one-or-more-spaces-or-tabs –

+0

Sorry .. bitte lesen Sie die aktualisierten Fragen. –

Antwort

0

Vielleicht hilfreich für Sie,

VERSUCHEN SIE DIESE AKTUALISIERT CODE

<?php 
    $str = "@zzz http://pbs.xx.com/xxx/x/xx_xx.jpg RT @yyyy_y: Foto Bareng zx, vc: Politik Boleh Beda Tapi Silaturahim Jalan Terus https://er.dfo/gffggf"; 

    $result = array_count_values(explode(' ', $str)); 
    arsort($result);// not neccesary 
    echo "<pre>";print_r($result);exit; 
?> 

OUTPUT

Array 
(
    [Tapi] => 1 
    [Beda] => 1 
    [Boleh] => 1 
    [Silaturahim] => 1 
    [Jalan] => 1 
    [https://er.dfo/gffggf] => 1 
    [Terus] => 1 
    [Politik] => 1 
    [vc:] => 1 
    [RT] => 1 
    [] => 1 
    [http://pbs.xx.com/xxx/x/xx_xx.jpg] => 1 
    [@yyyy_y:] => 1 
    [Foto] => 1 
    [zx,] => 1 
    [Bareng] => 1 
    [@zzz] => 1 
) 
+0

Ich habe diesen Code ausprobiert. Aber immer noch, ich will, dass der Link als 1 Wort –

+0

@Leonard Febrianto zählt, bitte versuchen Sie diesen aktualisierten Code. –

+0

@LeonardFebrianto, die Lösung ist Arbeit für Sie? –

0

Dies ist, was ich tun würde:

$string ="@zzz http://pbs.xx.com/xxx/x/xx_xx.jpg RT @yyyy_y: Foto Bareng zx, vc: Politik Boleh Beda Tapi Silaturahim Jalan Terus https://er.dfo/gffggf"; 
$pieces = explode(" ", $string); 
echo "the words are: " . count($pieces) ; 
+0

Entschuldigung .. Bitte lesen Sie die aktualisierten Fragen. –

+0

@LeonardFebrianto Die Funktion 'explode' ist wahrscheinlich das, was Sie nach Ihrer Beschreibung suchen. Ein paar Fellows haben es hier bereits kommentiert. – MarkSkayff

+0

, um genau diese Zeichenfolge zu erhalten: @zzz = 1, http://pbs.xx.com/xxx/x/xx_xx.jpg = 1, RT = 1 @yyyy_y: = 1, foto = 1, bareng = 1, die du brauchst um die Funktion 'str_replace (" "," = 1 ", $ string) einzugeben;' –

0

ersten sauber zusätzlichen Platz am Anfang und am Ende mit TRIM()

$str = trim("@zzz http://pbs.xx.com/xxx/x/xx_xx.jpg RT @yyyy_y: Foto Bareng zx, vc: Politik Boleh Beda Tapi Silaturahim Jalan Terus https://er.dfo/gffggf"); 

und thes versuchen Sie dies:

echo count(array_filter(explode(' ', $str))); 

Diese zählen nicht, wenn zwischen den Wörtern mehr als ein Leerzeichen steht Beispiel:

' word1 word2  word3 ' -> return 3 

AKTUALISIERT zu zählen, wie oft jedes Wort erscheint:

$str = trim("@zzz http://pbs.xx.com/xxx/x/xx_xx.jpg RT @zzz Foto Bareng zx, vc: Politik Boleh Beda Tapi Silaturahim Jalan Terus https://er.dfo/gffggf"); 
$data = array_filter(explode(' ', $str)); 
$hash = Array(); 
foreach($data as $word){ 
    if(!key_exists($word, $hash)) 
     $hash[$word] = 0; 
    $hash[$word]++; 
} 
print_r($hash); 
Verwandte Themen