Hezký večer,
tak jsem jednou zase beznadějný. Potřebuju rozdělit daný text na části ideálně podle počtu slov, ale to se mi nic nepovedlo vygooglit.
Tak aspoň podle počtu znaků, ale tam tam mám problém se znaky viz www.iedit.cz/hledani/ .
Jak se zbavit toho balastu?
$fp = FOpen ("./inc/o-systemu.php", "r"); // otevře soubor data.txt pro čtení
$data = FRead ($fp, FileSize ("./inc/o-systemu.php")); // načte do proměnné $data obsah souboru data.txt
FClose ($fp);
$data = (strip_tags("$data"));
$data = (chunk_split("$data","50",".-!-."));
echo $data;
děkuju, děkuju---------- Příspěvek doplněn 27.04.2012 v 23:17 ----------viz třeba &scar má bejt š---------- Příspěvek doplněn 27.04.2012 v 23:29 ----------Teoreticky by šlo celý text rozdělit, každé slovo do jednoho pole, ale to mi připadá trochu zbytečně zpomalující.
čo tak rozdeliť reťazec pomocou explode, reťazec by sa rozdeľoval v medzerách medzi slovami a pomocou jednoduchého cyklu spočítal počet slov a po určitom počte ich pomocou implode znovu spojiť po určitom počte
čo tak rozdeliť reťazec pomocou explode, reťazec by sa rozdeľoval v medzerách medzi slovami a pomocou jednoduchého cyklu spočítal počet slov a po určitom počte ich pomocou implode znovu spojiť po určitom počte
Omlouvám se, napadlo mě ti před minutkou viz výše, ale není to pomalé? Když budu mít najednou pole s několika stovkami (spíš pak tisící) polí. Kéž by to šlo jednodušeji ...
No, mně se ten samotný soubor o-systemu.php zobrazuje pěkně, když si v prohlížeči nastavím kódování UTF-8. To, co tam máš, jsou jen entity, jiné vyjádření speciálních znaků.Teď jsem si s tím ještě hrál, entity rozhodí řádek$data = (chunk_split("$data","50",".-!-."));V komentářích pod tou funkcí jsou různé návody na funkce (např. HtmlEntitySafeSplit), které by měly umět pracovat i s textem plným HTML entit.Úplně jsem nepochopil, co má ta funkce chunk_split, kterou používáš, dělat. No, to je jedno, zkusil jsem tohle a jak se zdá, funguje to:
$fp = FOpen ("./inc/o-systemu.php", "r"); // otevře soubor data.txt pro čtení $data = FRead ($fp, FileSize ("./inc/o-systemu.php")); // načte do proměnné $data obsah souboru data.txt FClose ($fp); $data = (strip_tags("$data")); //$data = htmlspecialchars_decode( $data ); //$data = (chunk_split("$data","50",".-!-.")); $data = wordwrap( $data, 50, '.-!-.' ); echo $data; ?>Áááha, už vím ten rozdíl. Funkce chunk_split dělí bez ohledu na okolní znaky, wordwrap dělí pouze slova (podle mezer). Tak teď nad tím ještě jdu koumat.---------- Příspěvek doplněn 28.04.2012 v 08:42 ----------Tak co jsem koukal, ty html entity se mi nedaří převést zpět (v prohlížeči se samozřejmě ukazují v pořádku), asi by to chtělo mít tabulku znaků a tabulku entit a nahrazovat, no... :/---------- Příspěvek doplněn 28.04.2012 v 09:01 ----------Líbej mi nohy, děkuji:
$fp = FOpen ("./inc/o-systemu.php", "r"); // otevře soubor data.txt pro čtení $data = FRead ($fp, FileSize ("./inc/o-systemu.php")); // načte do proměnné $data obsah souboru data.txt FClose ($fp); $data = (strip_tags("$data")); $data = html_entity_decode( $data, NULL, 'UTF-8' ); $data = (chunk_split("$data","50",".-!-.")); echo $data; ?>EDIT: Každopádně já bych se asi stejně raději pokoušel použít buď wordwrap, nebo explode. Na porovnání zátěže si můžeš udělat benchmark. Každopádně rozdělit podle slov a pak vypsat na každý řádek 5 slov, to by bylo pomocí explode a cyklu jednoduché :)---------- Příspěvek doplněn 28.04.2012 v 09:23 ----------Ještě koukám, že dělit na slova (do arraye) umí funkce str_word_count, používá se takto:str_word_count ( $data, 1, 'áčďéěíňóřšťúůýž' );Jako druhý parametr bere 0 (= vypíše pouze počet slov), 1 (= uloží do pole ve tvaru => slovo), 2 (= uloží do pole ve tvaru => slovo). Jako třetí parametr bere speciální znaky, které se mají brát jako součást slova (tedy bylo nutno doplnit českou diakritiku).
No, mně se ten samotný soubor o-systemu.php zobrazuje pěkně, když si v prohlížeči nastavím kódování UTF-8. To, co tam máš, jsou jen entity, jiné vyjádření speciálních znaků.Teď jsem si s tím ještě hrál, entity rozhodí řádek$data = (chunk_split("$data","50",".-!-."));V komentářích pod tou funkcí jsou různé návody na funkce (např. HtmlEntitySafeSplit), které by měly umět pracovat i s textem plným HTML entit.Úplně jsem nepochopil, co má ta funkce chunk_split, kterou používáš, dělat. No, to je jedno, zkusil jsem tohle a jak se zdá, funguje to:
$fp = FOpen ("./inc/o-systemu.php", "r"); // otevře soubor data.txt pro čtení $data = FRead ($fp, FileSize ("./inc/o-systemu.php")); // načte do proměnné $data obsah souboru data.txt FClose ($fp); $data = (strip_tags("$data")); //$data = htmlspecialchars_decode( $data ); //$data = (chunk_split("$data","50",".-!-.")); $data = wordwrap( $data, 50, '.-!-.' ); echo $data; ?>Áááha, už vím ten rozdíl. Funkce chunk_split dělí bez ohledu na okolní znaky, wordwrap dělí pouze slova (podle mezer). Tak teď nad tím ještě jdu koumat.---------- Příspěvek doplněn 28.04.2012 v 08:42 ----------Tak co jsem koukal, ty html entity se mi nedaří převést zpět (v prohlížeči se samozřejmě ukazují v pořádku), asi by to chtělo mít tabulku znaků a tabulku entit a nahrazovat, no... :/---------- Příspěvek doplněn 28.04.2012 v 09:01 ----------Líbej mi nohy, děkuji:
$fp = FOpen ("./inc/o-systemu.php", "r"); // otevře soubor data.txt pro čtení $data = FRead ($fp, FileSize ("./inc/o-systemu.php")); // načte do proměnné $data obsah souboru data.txt FClose ($fp); $data = (strip_tags("$data")); $data = html_entity_decode( $data, NULL, 'UTF-8' ); $data = (chunk_split("$data","50",".-!-.")); echo $data; ?>EDIT: Každopádně já bych se asi stejně raději pokoušel použít buď wordwrap, nebo explode. Na porovnání zátěže si můžeš udělat benchmark. Každopádně rozdělit podle slov a pak vypsat na každý řádek 5 slov, to by bylo pomocí explode a cyklu jednoduché :)---------- Příspěvek doplněn 28.04.2012 v 09:23 ----------Ještě koukám, že dělit na slova (do arraye) umí funkce str_word_count, používá se takto:str_word_count ( $data, 1, 'áčďéěíňóřšťúůýž' );Jako druhý parametr bere 0 (= vypíše pouze počet slov), 1 (= uloží do pole ve tvaru => slovo), 2 (= uloží do pole ve tvaru => slovo). Jako třetí parametr bere speciální znaky, které se mají brát jako součást slova (tedy bylo nutno doplnit českou diakritiku).Díky díky, to $data = html_entity_decode( $data, NULL, 'UTF-8' ); už skoro funguje (akorát tam zůstávaj nějaké velké mezery), ale stejně nejlíp mi nakonec vyšlo $Old = array('á', 'Á', 'é', 'É', 'í' ,'Í', 'ó', 'Ó', 'ú', 'Ú', 'ý', 'Ý', 'č', 'Č', 'ď', 'Ď', 'ě', 'ě', 'ň', '&Ncaro;', 'ř', 'Ř', 'š', 'Š', 'ť', 'Ť', 'ž', 'Ž', ' ', '–', '„', '“'); $New = array('á', 'Á', 'é', 'É', 'í', 'Í', 'ó', 'Ó', 'ú', 'Ú', 'ý', 'Ý', 'č', 'Č', 'ď', 'Ď', 'ě', 'Ě', 'ň', 'Ň', 'ř', 'Ř', 'š', 'Š', 'ť', 'Ť', 'ž', 'Ž', ' ', '–', '„', '“' ); $data = str_replace($Old, $New, $data);