Autor Zpráva
sh
Profil *
Ahoj, fce str_word_count() mi dává chybný údaj vždy, když ve zkoumaném řetězci mám diakritiku (tu bere jako jedno slovo navíc).
Co s tím? Díky.
Keeehi
Profil
Koukni na třetí část v příkladu v manuálu.
sh
Profil *
Koukal jsem, ale asi to nechápu :( Můžeš mě trošku popostrčit, prosím?
Keeehi
Profil
Přesně tu funkci neznám, ale vypadá to, že to hledá písmena anglické abecedy a ostatní znaky. Tyto ostatní znaky používá jako oddělovače slov, takže oddělovačem je kromě mezery taky třeba písmeno s diakritikou, nebo číslice. Znaky, které uvedeš jako třetí parametr funkce budou z oddělovačů vyjmuty a přeřazeny mezi písmena. Tzn. Písmena s diakritikou, která nemají být považována za oddělovače musíš všechny vypsat jako třetí parametr funkce.
A nebo si napsat funkci vlastní.
sh
Profil *
Zkoušel jsem tohle:
print_r(str_word_count($text, 1, 'ěščřžýáíéúůťďňó'), 2);


Původní vstup:
Ó, náhlý déšť teď zvířil prach a čilá laň běží s houfcem gazel k úkrytům.

Co to vyplivlo:
Array ( [0] => n [1] => hl [2] => d [3] => te [4] => zv [5] => il [6] => prach [7] => a [8] => il [9] => la [10] => b [11] => ž [12] => s [13] => houfcem [14] => gazel [15] => k [16] => kryt [17] => m ) 


Tu diakritiku to ignoruje i když ji tam vypíšu.
Budu rád za každou radu.
Keeehi
Profil
1) Ten Váš kód nefunguje vůbec, nic se nezobrazuje.
2) Pokud ho upravím na print_r(str_word_count($text, 1, 'ěščřžýáíéúůťďňó'));, už je to lepší:
Array ( [0] => � [1] => náhlý [2] => déšť [3] => teď [4] => zvířil [5] => prach [6] => a [7] => čilá [8] => laň [9] => běží [10] => s [11] => houfcem [12] => gazel [13] => k [14] => úkrytům)
� - má to trochu problémy s utf-8, ale to je vedlejší
3) Když tam doplním VŠECHNY znaky do třetího parametru ('ěščřžýáíéúůťďňóÓ'), už to pracuje správně:
Array ( [0] => Ó [1] => náhlý [2] => déšť [3] => teď [4] => zvířil [5] => prach [6] => a [7] => čilá [8] => laň [9] => běží [10] => s [11] => houfcem [12] => gazel [13] => k [14] => úkrytům )

Ale našel jsem pro Vás nejspíš něco lepšího:
echo preg_match_all("/\p{L}[\p{L}\p{Mn}\p{Pd}'\x{2019}]*/u", $text);
Nemůžu zaručit, že to funguje ve 100% případů, jelikož to není můj výtvor. (zdroj) Fungoval ovšem u všech případů, které jsme zkoušel. Je to napsané pro práci s textem v utf-8. Pokud utf-8 nepoužíváte smažte z něj modifikátor u a měl by fungovat.
sh
Profil *
Tak mě napadlo že bych mohl předtím odstranit diakritiku. Pak to funguje správně. Ale jak ten skript přimět, aby čísla počítal jako slova?
AM_
Profil
sh:
co je k nepochopení na manuálui, na který odkázal [#2] Keeehi ?

"charlist

A list of additional characters which will be considered as 'word'".

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0