我是PHP的新手,我试图在某些字符串中显示最常用的单词。但是......我不想把词语称为“a,se,na,pak”等。我怎样才能为该脚本提供一些规则?
$text = "Tato velmi populární kniha vypráví o životě hlavní postavy – Robinsona Crusoe. Robinson žil se svojí rodinou v malém Anglickém městě York. Jeho otec byl úspěšný obchodník a měl přání, aby se Robinson stal soudcem. Ten ale toužil po pozici námořníka a proto utekl z domu. Prožíval si život přesně podle svých představ. Pak se ale stala nehoda. Jeho loď ztroskotala a rybář, který ho zachránil, ho odvezl do Londýna. Robinson se ale nenechal odradit a pokračoval dál ve svých dobrodružných plavbách. Jednou se dostal do zajetí pirátů, v jejichž čele byl Ab-Dél-Mámí. Ten si Robinsona oblíbil a zaplatil mu učitele. Brzy se naučil jejich řeč a žil v otroctví 5 let. Když poté plul na malé loďce s kamarádem Xurym a přepadla je velká bouře, ztroskotal a ocitl se na opuštěném ostrově daleko od civilizace. Když se smířil s krutou realitou, začal si shánět základní věci pro přežití a budoval si jednoduché obydlí. Postupem času se naučil vyrábět mnoho věcí. Šaty, zbraně, boty, svíčky, smetanu, tvaroh a další věci. Ochočil si několik divokých zvířat a našel si papouška Andu, který mu dělal společníka. Při jednom nájezdů lidožroutů se také seznámil s divochem, kterého pojmenoval podle dne nalezení – Pátka. Pátek byl velmi učenlivý a Robinsonovi pomáhal jak fyzicky, tak psychicky. Robinson si na ostrově prožil celkem 35 nezapomenutelných let. Pak se dokázal dostat na anglický koráb, jehož posádka ho zachránila a odvezla na domovskou půdu. Po dalších sedmi letech se Robinson rozhodl, že se podívá zpět na ostrov.";
$slova = str_word_count($text, 1);
$frekvence = array_count_values($slova);
$stop = array("a", "pak", "se", "na");
arsort($frekvence);
$pole = array_diff($slova, $stop);
echo $text . "<br><br>";
echo "<p>10 nejpoužívanějších slov v ukázkovém textu je:</p>";
for ($i = 0; $i < 10; $i++) {
echo key($frekvence) . "<br>";
next($frekvence);
}
答案 0 :(得分:0)
你可以这样做:
$text = "Tato velmi populární kniha vypráví o životě hlavní postavy – Robinsona Crusoe. Robinson žil se svojí rodinou v malém Anglickém městě York. Jeho otec byl úspěšný obchodník a měl přání, aby se Robinson stal soudcem. Ten ale toužil po pozici námořníka a proto utekl z domu. Prožíval si život přesně podle svých představ. Pak se ale stala nehoda. Jeho loď ztroskotala a rybář, který ho zachránil, ho odvezl do Londýna. Robinson se ale nenechal odradit a pokračoval dál ve svých dobrodružných plavbách. Jednou se dostal do zajetí pirátů, v jejichž čele byl Ab-Dél-Mámí. Ten si Robinsona oblíbil a zaplatil mu učitele. Brzy se naučil jejich řeč a žil v otroctví 5 let. Když poté plul na malé loďce s kamarádem Xurym a přepadla je velká bouře, ztroskotal a ocitl se na opuštěném ostrově daleko od civilizace. Když se smířil s krutou realitou, začal si shánět základní věci pro přežití a budoval si jednoduché obydlí. Postupem času se naučil vyrábět mnoho věcí. Šaty, zbraně, boty, svíčky, smetanu, tvaroh a další věci. Ochočil si několik divokých zvířat a našel si papouška Andu, který mu dělal společníka. Při jednom nájezdů lidožroutů se také seznámil s divochem, kterého pojmenoval podle dne nalezení – Pátka. Pátek byl velmi učenlivý a Robinsonovi pomáhal jak fyzicky, tak psychicky. Robinson si na ostrově prožil celkem 35 nezapomenutelných let. Pak se dokázal dostat na anglický koráb, jehož posádka ho zachránila a odvezla na domovskou půdu. Po dalších sedmi letech se Robinson rozhodl, že se podívá zpět na ostrov.";
//Separate each word and remove separators such as `,` or `.` or `;` or `:` etc
$words = explode(" ", str_replace(array(",",".",";",":"), "", $text));
//Create array to hold words and count
$words_count = array();
//Create array that has disallowed words/phrases
$not_allowed = array("a", "pak", "se", "na");
//Go through each word
foreach($words as $word){
if(!in_array($word, $not_allowed)){
//If it's not in the "not_allowed" array...
if(array_key_exists($word, $words_count)){
//If we've already logged this word, add one to the count
$words_count[$word]++;
} else {
//Haven't seen this word before - add it to the array with value 1
$words_count[$word] = 1;
}
}
}
//Sort the array by value (number of occurrences)
arsort($words_count);
//Print the result
print_r($words_count);
这将输出:
Array
(
[si] => 7
[Robinson] => 5
[ale] => 3
[ho] => 3
[v] => 3
[byl] => 3
[s] => 3
[Pak] => 2
[naučil] => 2
[Jeho] => 2
[do] => 2
[podle] => 2
[let] => 2
[Když] => 2
[svých] => 2
[žil] => 2
[mu] => 2
[který] => 2
[ostrově] => 2
[věci] => 2
[–] => 2
[Ten] => 2
[velmi] => 2
[Robinsona] => 2
[smetanu] => 1
[další] => 1
[Ochočil] => 1
[tvaroh] => 1
[zvířat] => 1
[dělal] => 1
[společníka] => 1
[Při] => 1
[Andu] => 1
[papouška] => 1
[divokých] => 1
[svíčky] => 1
[našel] => 1
[několik] => 1
[vyrábět] => 1
[začal] => 1
[shánět] => 1
[základní] => 1
[pro] => 1
[realitou] => 1
[krutou] => 1
[od] => 1
[civilizace] => 1
[smířil] => 1
[přežití] => 1
[budoval] => 1
[věcí] => 1
[Šaty] => 1
[zbraně] => 1
[mnoho] => 1
[času] => 1
[jednoduché] => 1
[obydlí] => 1
[Postupem] => 1
[boty] => 1
[kterého] => 1
[jehož] => 1
[posádka] => 1
[zachránila] => 1
[odvezla] => 1
[koráb] => 1
[anglický] => 1
[nezapomenutelných] => 1
[dokázal] => 1
[dostat] => 1
[domovskou] => 1
[půdu] => 1
[že] => 1
[podívá] => 1
[zpět] => 1
[ostrov] => 1
[rozhodl] => 1
[letech] => 1
[Po] => 1
[dalších] => 1
[sedmi] => 1
[35] => 1
[celkem] => 1
[daleko] => 1
[pojmenoval] => 1
[dne] => 1
[nalezení] => 1
[divochem] => 1
[seznámil] => 1
[nájezdů] => 1
[lidožroutů] => 1
[také] => 1
[Pátka] => 1
[Pátek] => 1
[tak] => 1
[psychicky] => 1
[prožil] => 1
[fyzicky] => 1
[jak] => 1
[učenlivý] => 1
[Robinsonovi] => 1
[pomáhal] => 1
[jednom] => 1
[loďce] => 1
[pozici] => 1
[námořníka] => 1
[proto] => 1
[po] => 1
[toužil] => 1
[aby] => 1
[stal] => 1
[soudcem] => 1
[utekl] => 1
[z] => 1
[stala] => 1
[nehoda] => 1
[loď] => 1
[představ] => 1
[přesně] => 1
[domu] => 1
[Prožíval] => 1
[život] => 1
[přání] => 1
[měl] => 1
[hlavní] => 1
[postavy] => 1
[Crusoe] => 1
[životě] => 1
[o] => 1
[populární] => 1
[kniha] => 1
[vypráví] => 1
[svojí] => 1
[rodinou] => 1
[otec] => 1
[úspěšný] => 1
[obchodník] => 1
[] => 1
[York] => 1
[malém] => 1
[Anglickém] => 1
[městě] => 1
[ztroskotala] => 1
[rybář] => 1
[5] => 1
[poté] => 1
[plul] => 1
[otroctví] => 1
[řeč] => 1
[učitele] => 1
[Brzy] => 1
[jejich] => 1
[malé] => 1
[Tato] => 1
[bouře] => 1
[ztroskotal] => 1
[ocitl] => 1
[velká] => 1
[je] => 1
[kamarádem] => 1
[Xurym] => 1
[přepadla] => 1
[zaplatil] => 1
[oblíbil] => 1
[pokračoval] => 1
[dál] => 1
[ve] => 1
[odradit] => 1
[nenechal] => 1
[zachránil] => 1
[odvezl] => 1
[Londýna] => 1
[dobrodružných] => 1
[plavbách] => 1
[jejichž] => 1
[čele] => 1
[Ab-Dél-Mámí] => 1
[pirátů] => 1
[zajetí] => 1
[Jednou] => 1
[dostal] => 1
[opuštěném] => 1
)
获得$words_count
数组后,您可以显示最常用的单词:
$most_freq = array_keys($words_count);
echo "Ten most frequent words:<br><br>";
for($i = 0; $i < 10; $i++){
echo $most_freq[$i]."<br>";
}
答案 1 :(得分:0)
你可以试试这个
$str = "Tato velmi populární kniha vypráví o životě hlavní postavy – Robinsona Crusoe. Robinson žil se svojí rodinou v malém Anglickém městě York. Jeho otec byl úspěšný obchodník a měl přání, aby se Robinson stal soudcem. Ten ale toužil po pozici námořníka a proto utekl z domu. Prožíval si život přesně podle svých představ. Pak se ale stala nehoda. Jeho loď ztroskotala a rybář, který ho zachránil, ho odvezl do Londýna. Robinson se ale nenechal odradit a pokračoval dál ve svých dobrodružných plavbách. Jednou se dostal do zajetí pirátů, v jejichž čele byl Ab-Dél-Mámí. Ten si Robinsona oblíbil a zaplatil mu učitele. Brzy se naučil jejich řeč a žil v otroctví 5 let. Když poté plul na malé loďce s kamarádem Xurym a přepadla je velká bouře, ztroskotal a ocitl se na opuštěném ostrově daleko od civilizace. Když se smířil s krutou realitou, začal si shánět základní věci pro přežití a budoval si jednoduché obydlí. Postupem času se naučil vyrábět mnoho věcí. Šaty, zbraně, boty, svíčky, smetanu, tvaroh a další věci. Ochočil si několik divokých zvířat a našel si papouška Andu, který mu dělal společníka. Při jednom nájezdů lidožroutů se také seznámil s divochem, kterého pojmenoval podle dne nalezení – Pátka. Pátek byl velmi učenlivý a Robinsonovi pomáhal jak fyzicky, tak psychicky. Robinson si na ostrově prožil celkem 35 nezapomenutelných let. Pak se dokázal dostat na anglický koráb, jehož posádka ho zachránila a odvezla na domovskou půdu. Po dalších sedmi letech se Robinson rozhodl, že se podívá zpět na ostrov.";
$replace_str = array('a'=> '', 'se'=> '', 'na'=>'', 'pak' => '');
echo strtr ($str, $replace_str);