Stejně jako u sazby textu při tisku existují typografická pravidla, tak existují typografická pravidla i pro web. Jak vyřešit nezalamování textu v případech, kdy máme před slovem jednopísmenné předložky nebo spojky, si ukážeme dnes.
Řešení je docela jednoduché, použijeme funkci ereg_replace(string vzor, string nahrazení, string řetězec), kde použijeme regulárního výrazu. Ten sestavíme tak, že uděláme výčet znaků, které chceme změnit. Regulární výraz tedy bude vypadat takto: „([svzkuoiaSVZKAUOI])“. Tyto znaky nahradíme řetězem „ znak “.
<?php
$text="Dnes i včera bylo v Šebetově pěkně";
$typotext=ereg_replace(" ([svzkuoiaSVZKAUOI]) ", " \\1 ", $text);
echo "<p><strong>Neupravený text: </strong>".htmlspecialchars($text)."</p>";
echo "<p><strong>Upravený text:</strong> ".htmlspecialchars($typotext)."</p>";
?>
Příspěvek vyšel v Pondělí 9.10.2006 22:27 v kategorii Programování a byl 7247x zobrazen. Pokud se vám líbil můžete si jej zalinkovat: Linkuj.cz, Del.icio.us
Nemá to být
echo "<p><strong>Upravený text:</strong> ".htmlspecialchars($typotext)."</p>";
?
Ouch, sorry za nějaké rozhození komentáře, jde o to, že upravený text by se měl vypisovat přes $typotext a ne $text; imho.
Jo máš pravdu, hned to napravím a komentář taky, u weblogu ještě vychytávám chybičky ;o)
Pokud si chcete typograficky ošetřit text, můžete zkusit CSText: http://strzibny.name/cstext.
To můžeme regulární výraz samozřejmě doplnit:
([svzkuoiaSVZKAUOI]|ve|pod|nad|...|) Prostě co je potřeba
mimochodem, mas tam drobnou chybku. ten seznam je takovy: K, k, O, o, S, s, V, v, Z, z U, u, A, I, i. Tedy malé a to této skupiny nepatří
Když přehlédnu malé chybičky, které si každý dokáže sám už opravit, pak to hodnotím jako velice přínosnou věc.
V jednoduchosti je krása :-)
Děkuji !
Pěkný článek a inspirace pro mě, na jejíž základě jsem vytvořil veřejny " replacer" http://www.nedivse.cz/doplnovani-pevnych-mezer/ a trochu jem tu tvoji metodu ještě vylepšil.
"A jedeme dál ..." Človíčkův Weblog aneb Michal Horák bloguje. (c) Michal Horák (Človíček webdesign) 2006