Autor | Zpráva | ||
---|---|---|---|
a Profil * |
#1 · Zasláno: 23. 12. 2006, 19:18:39
zdar je dobré takhle u GB rozdělovat dlouhá slova?
chunk_split("$text", 25, " "); nejspíše asi né co? dělá mi to nějak neplechu :-/ jak lépe to udělat? pak je dobré řešení takhle zaokrouhlit nahoru ? Round($c); $c = Floor($c+0.999999999999); dik |
||
Casero Profil |
#2 · Zasláno: 23. 12. 2006, 19:30:22
a
Zaokrouhlit nahoru -> ceil() a dlouhá slova, co třeba si rozsekat text do poli a těm pak měřit delku a v případě moc dlouhých slov rozpůlit? |
||
a Profil * |
#3 · Zasláno: 24. 12. 2006, 13:56:10
nojo taky sem právě ted narazil na zaokrouhlení nahoru pomocí ceil() jenže já už použil u páru věcí toco mám tak se chci zeptat jestli to je good.
no to já asi nedá dokupy to rozdělení jak tyjsi to řek zas tak zdatný nejsem :D |
||
krteczek Profil |
#4 · Zasláno: 24. 12. 2006, 14:14:41 · Upravil/a: krteczek
krteczek |
||
Black Wolf Profil |
#5 · Zasláno: 25. 12. 2006, 18:10:45
Na dělení slov bych viděl jako nejlepší řešení regulární výraz, třeba něco takového:
ereg_replace('([^ ]{25})','\1 ',$text); Jediná nevýhoda je, že pokud bude slovo stejně dlouhé jako max délka, tak za ním budou dvě mezery, ale to zas tolik nevadí vzhledem k tomu že prohlížeč zobrazí stejně jen jednu (krom toho by to šlo ošetřit dalším jednoduchým reg. výrazem). To procházení pole které navrhuje krteczek by při dlouhém textu bylo extrémně pomalé. |
||
krteczek Profil |
#6 · Zasláno: 25. 12. 2006, 18:49:00
Black Wolf: Jedná se o knihu návštěv, pochybuji, že povolí víc jak 5000 znaků na zprávu, a v tom případě to je jedno, navíc v tom cyklu může jednotlivá slova kontrolovat třeba jestli to nejsou url a převádět je na odkazy atd.
krteczek |
||
Black Wolf Profil |
#7 · Zasláno: 27. 12. 2006, 23:48:43
krteczek: Pokud se to provede jednorázově při ukládání textu tak proč ne, pokud to ale někdo nacpe do zobrazovací části, tak to při větší návštěvnosti může způsobit problémy i u relativně krátkých textů. Samozřejmě u webíku na který vleze pět lidí denně je celkem jedno jak (ne)optimálně je to napsaný, ale když si člověk jendou zvykne používat pomalý konstrukce...;) Na převod url na odkazy bych taky viděl jako lepší řešení regulární výraz.
|
||
krteczek Profil |
#8 · Zasláno: 28. 12. 2006, 08:16:18
Black Wolf: Já to tam nenapsal, ale takhle jsem to myslel, při ukládání se zkontroluje vše potřebné a provedou se všechny výpočetně náročné operace, takže veškeré převody atd. Výpis je potom jen o vypsání obsahu, takže rychlý a nezatěžuje server.
krteczek |
||
a Profil * |
#9 · Zasláno: 28. 12. 2006, 20:56:26
zdar jsem tu zas :D dal jsem to rozdělení slov při zapisování do DB a chci se zeptat jak udělat aby s emi ty ulrp řevedly na link?
a jak uědlám to omezení počtu znaků na zprávu? když to protáhnu přez todle $pocet_znaku = count($text); a dám při zápisu podmínku méně třeba než těch 5000 takhle seto dělá? dík |
||
krteczek Profil |
#10 · Zasláno: 28. 12. 2006, 21:23:29
if(mb_strlen($text, "utf-8") > MaxDelkaZpravy){echo 'zprava je prilis dlouha';}//uprav si to dle svých potreb :-)))
|
||
D1ce Profil |
#11 · Zasláno: 28. 12. 2006, 23:41:31
To all:
O tomhle nikdo neslyšel? wordwrap(); a Do formuláře bych dal upozornění ve stylu: "Příspšvek delší než <?php echo MAX_DELKA_ZPRAVY; ?> bude automaticky zkrácen." a do kódu: define('MAX_DELKA_ZPRAVY', 5000); $text = substr($text, 0, MAX_DELKA_ZPRAVY); a basta fidli. |
||
zdenek Profil * |
#12 · Zasláno: 29. 12. 2006, 10:05:52
Na převod textu, na odkazy a zároveň na zkracování dlouhých slov i odkazů jsem si udělal regulární výraz. Celé znění dlouhého slova se objeví po najetí myši nad slovo. Funkce Wordwrap() se mi neosvědčila, protože každý znak je jinak široký a je velký rozdíl mezi 50 "i" a 50 "w" na řádku.
|
||
zdenek Profil * |
#13 · Zasláno: 29. 12. 2006, 10:17:09
Ještě dodatek: v části reg. výrazu [w]+)*.w{2,4}(?:/|)(?:[^,. ] se mi objevil čtvereček místo "b"
|
||
krteczek Profil |
#14 · Zasláno: 29. 12. 2006, 12:58:06
D1ce: znám, ale mám výhrady, protože v tomhle použití co navrhuješ rozdělí celý text na na každé x pozici mezerou, proto jsem navrhnoval pole a rozdělení jen těch dlouhých slov
a právě funkcí wordwrap krteczek |
||
krteczek Profil |
#15 · Zasláno: 30. 12. 2006, 16:39:39
Teď jsem přišel na to že ty regulární výrazy pro převod nefungují správně určitě v utf-8 a dost možná v žádné multibyte znakové sadě :-(
krteczek |
||
D1ce Profil |
#16 · Zasláno: 30. 12. 2006, 18:15:56
krteczek
Manulál (modifíkátory): u (PCRE_UTF8) This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5. http://cz.php.net/manual/en/reference.pcre.pattern.modifiers.php |
||
D1ce Profil |
#17 · Zasláno: 31. 12. 2006, 21:46:54 · Upravil/a: D1ce
Update
wordwrap se fakticky chová nějak divně. Doporučil bych proto tento kód:
|
||
krteczek Profil |
#18 · Zasláno: 2. 1. 2007, 15:39:11 · Upravil/a: krteczek
smazáno
|
||
Časová prodleva: 2 měsíce
|
|||
nofate Profil |
#19 · Zasláno: 17. 3. 2007, 19:06:19 · Upravil/a: nofate
Nic proti, ale niekto tu kritizoval krteczek-a ze jeho sposob ( :Zasláno: 24.12.2006 14:14:41 ) by bol moc zdlouhavy pri mnoha slovach. Jenze opak je pravdou. Regularni vyrazy jsou moc silne ale na ukor rychlosti, preto ich treba pouzivat iba vtedy, ak je to nevyhnutne a neda sa dana vec urobit inym sposobom.
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0