Pokročilé formátování nebo-li převod tagů » PHP scripty » Blog » CrazyDog ~ Multi-blog

Pokročilé formátování nebo-li převod tagů

So, 11. srpen 2007, 20:33
Pokročilé formátování nebo-li převod tagů

V prvním článku jsme si ukázali jak vkládat tagy do textarey pomoci JavaScriptu a nyní si ukážeme jak se s nimi vypořádat aniž by docházelo ke kříženi či neukončení tagu.

Následující scripty vkládejte mezi výpis z databáze nebo do zvláštního souboru, který includujte. Takže výpis bude vypadat například takto:

$cist_mysql = mysql_query("SELECT * FROM tabulka ORDER BY id DESC LIMIT 0,10");
while($cist = mysql_fetch_array($cist_mysql)) {
  require("./formatovani.php");
  echo $cist['text'];
}

Jako první jsme si ukázali vkládaní smajlíků typu :-), :-(, … takže do formatovani.php vložte:

$smajlici = array(":-)", ":-(", ":-D", ";-)");
$prevod = array(
  '<img src="1.gif" alt="smajlík" align="middle" />',
  '<img src="2.gif" alt="smajlík" align="middle" />',
  '<img src="3.gif" alt="smajlík" align="middle" />',
  '<img src="4.gif" alt="smajlík" align="middle" />'
); /* atd. */
$cist['text'] = str_replace($smajlici, $prevod, $cist['text']);

Jako druhé byli tagy tapu [b], [i], [s], … takže si do formatovani.php vložte:

$cist['text'] = preg_replace("'\[b\]([^\[\]<>]+)\[\/b\]'si", "<strong>$1</strong>", $cist['text']);
$cist['text'] = preg_replace("'\[i\]([^\[\]<>]+)\[\/i\]'si", "<em>$1</em>", $cist['text']);
$cist['text'] = preg_replace("'\[s\]([^\[\]<>]+)\[\/s\]'si", "<del>$1</del>", $cist['text']);
/* a další */

Tyto příkazy nepřevedou samostatné tagy ani křížené tagy, takže mezi [b] nesmí přijít [, ], < a >. A zatřetí jsme si ukázali vkládaní obrázků a odkazů, takže si do formatovani.php vložte:

$cist['text'] = preg_replace('/\[img=(http:\/\/[^ \]\[<>]+\.(gif|jpe?g|png))\]([^\[\]<>]+)\[\/img\]/', "<img src=\"$1\" alt=\"$3\" title=\"$3\" />", $cist['text']);
$cist['text'] = preg_replace('/\[url=((https?|ftp):\/\/([^\[\]<>]+))\]([^\[\]<>]+)\[\/url\]/', "<a href=\"$1\">$4</a>", $cist['text']);
/* Případně další varianty */

A tím jsme u konce formátování. Náhled celého díla najdete zde.

***** ø 3 (693 hlasů) ≈ Návratnost
(Jak stahovat videa z Y...) « Starší článek | Novější článek » (Stylování podle lang j...)

Štítky: JavaScript, tutoriál, zobrazit všechny štítky
! Našli jste v článku gramatické či pravopisné chyby? Je to z důvodu autorovy nemoci zvané dysgrafie. Tudíž všem děkuji za pochopení a každý článek pokud možno nechávám projít korekturou. !

Zatím 21 komentářů

web - reaguj - #92Mikev Po, 13. srpen 2007, 22:22
avatar

No, musím ti říct, díky za článek, přesně tohle jsem hledal *1* konkrétně ošetření neuzavřených formátovacích značek *5*, ale co se týče například převodu smajlů, tak bych to možná vyřešil jedním polem, namísto dvou…

Opera 9.10 / Windows XP
web - reaguj - #93CrazyDog mužv Po, 13. srpen 2007, 22:35
avatar

Mike: Omlouvám se, že jsem ti upravil příspěvek, ale vypadal šíleně. Příště použij formátování [code]. Jinak je pravda, že by i bylo lepší použit jen jedno pole typu:

$smajlici = array(":-)" => "<img src="1.gif\" alt=\"smajlík\" align=\"middle\" />");
než tohle, ale to je jen maličkost.

Firefox 2.0.0.6 / Ubuntu Linux
web - reaguj - #98Mikev Út, 14. srpen 2007, 16:55
avatar

v poho *5* musím ale říct, že formátování jsem si prvně nevšiml… tak jedna šipečka je trochu matoucí…

btw proč všichni tak rádi escapujou uvozovky? *17* já tedy escapuju pouze pokud je to nezbytně nutné, a jinak jen v regexp, popřípadě když echuju javascript…

Opera 9.10 / Windows XP
web - reaguj - #99CrazyDog mužv Út, 14. srpen 2007, 17:38
avatar

Mike: To bude tím, že to pravě dělají všichni. *4*
Teď jsem koukal na tvůj web a zase vidím, že máš špatně udělané české uvozovky.
#-cisla
Do kódu nepatří
Máš [EN uvozovka]text[CZ uvozovka zacatek]<br>[CZ uvozovka konec]text[EN uvozovka]…
#

Firefox 2.0.0.6 / Ubuntu Linux
web - reaguj - #102Mikev Út, 14. srpen 2007, 20:46
avatar

Crazydog: no já si myslím, že jednoduché úvozovky v html ničemu nevadí… pár názorů jsem na to četl, a podle mě je to fuk… Snad jen DTD musí být ve dvojtých (myslím). Jednoduché v html mám právě tam, kde je kód přímo echován, protože echování v jednoduchých se chová trochu jinak.

pokud teda myslíš tohle. pokud ne, tak sem tě asi nepochopil… *1*

ano, používám oboje, a pokud uvozovky vnořuji, tak vnořuji dvojté do jednoduchých nebo jednoduché do dvojitých, právě proto, abych je nemusel escapovat. *5*

Opera 9.10 / Windows XP
reaguj - #138xenix001v Ne, 26. srpen 2007, 11:08
avatar

XSS……Použijte u toho funkci htmlspecialchars();….

Firefox 2.0.0.6 / Windows XP
reaguj - #147Scaryv Út, 28. srpen 2007, 12:59
avatar

*1* Je tu funkční ?

Firefox 2.0.0.6 / Windows 98
web - reaguj - #149CrazyDog mužv Út, 28. srpen 2007, 13:12
avatar

Scary: Tobě to snad nefunguje?

Firefox 2.0.0.6 / Ubuntu Linux
reaguj - #151Scaryv Út, 28. srpen 2007, 14:16
avatar

No já to celé zkopčil a nic *1*

Firefox 2.0.0.6 / Windows 98
reaguj - #152Scaryv Út, 28. srpen 2007, 14:17
avatar

Já chci jen smajlíky do Návštěvní knihhy udělat *2* a Jak e snžím tak se snažím a nic ,,

Firefox 2.0.0.6 / Windows 98
web - reaguj - #154CrazyDog mužv Út, 28. srpen 2007, 14:20
avatar

Scary:příkladu je to taky okopírované z článku a vše funguje. Někde děláš chybu. Zkus si to ještě jednou přečíst. Možná máš chybu v proměnné.

Firefox 2.0.0.6 / Ubuntu Linux
reaguj - #155Scaryv Út, 28. srpen 2007, 14:22
avatar

A dá se tenhle příklad uvést i di Návštěví knihy ?*1*

Firefox 2.0.0.6 / Windows 98
reaguj - #156Scaryv Út, 28. srpen 2007, 14:23
avatar

Protoze kazdy script co jsme nasel na netu to jen se sice objevilil smajliky ale nebylo tam proste jak je tu v navstevni knize u tebe*21*

Firefox 2.0.0.6 / Windows 98
web - reaguj - #158CrazyDog mužv Út, 28. srpen 2007, 14:33
avatar

Scary: Tohle je jen příklad jak převádět smajlíky, které uložíš například v návštěvní knize, tak když napíšeš do příspěvku :-) tak se převede na obrázkového smajlíka. Jestli potřebuješ smajlíky na které když klikneš aby se objevil tam kde píšeš, tak to je popsané v článku vkládání do textarey.

Firefox 2.0.0.6 / Ubuntu Linux
reaguj - #159Scaryv Út, 28. srpen 2007, 14:36
avatar

Já chápu ale proste jak je treba na prikladu no tak ono se to pak smaze neboco protoze neco pridas a pak pridas druhy a ono to je jen to jedno a ne vsechny co jsi napsal ,,, Rikam , ze to potrebuji na navstevni knu ale me se to nechce prevadet ja to uz zkousel kolikrat ,,, Normal dam selecta atd… jenze se mi to vypise jako text i kdyz je tam prevod smailíků

Firefox 2.0.0.6 / Windows 98
web - reaguj - #160CrazyDog mužv Út, 28. srpen 2007, 14:44
avatar

Scary: Ten příklad nikde nic neukládá. To je jen náhled. Tam kde máš:

while(blabla) {
a tady dej formatovani, ktere prevadi smajliky
tady se ctou prispecky
}
Spiš máš špatné proměnné, když čteš příspěvek třeba přes proměnnou echo $cist['text']; tak musí být v
$cist['text'] = str_replace($smajlici, $prevod, $cist['text']);
mít $cist['text'] chápeš?

Firefox 2.0.0.6 / Ubuntu Linux
reaguj - #161Scaryv Út, 28. srpen 2007, 16:02
avatar

CrazyDog Pls das mi tvoje ICQ ? *21*

Firefox 2.0.0.6 / Windows 98
web - reaguj - #162CrazyDog mužv Út, 28. srpen 2007, 16:20
avatar

Scary: Nemám. Jen MSN a Jabber a najdeš je v sekci webmaster.

Firefox 2.0.0.6 / Ubuntu Linux
reaguj - #163Scaryv Út, 28. srpen 2007, 16:41
avatar

Ok ja si te doma pridam na MSN *19*

Firefox 2.0.0.6 / Windows 98
reaguj - #626Evil_666v Út, 30. prosinec 2008, 23:39
avatar

Sorry ale to si delas srandu? Takže když v db bude 20 řádků tak 20x budeš nahrávat jeden soubor? Ty chceš ten hosting znčit co? Nebylo by nahodou jednoduzsi to dat jako funci?

while($cist = mysql_fetch_array($cist_mysql)) {
require("./formatovani.php");
echo $cist['text'];
}

Firefox 3.0.5 / Windows Vista
web - reaguj - #839_UnREALv Po, 4. leden 2010, 17:36
avatar

Mockrát díky, hledal jsem sice něco jiného, ale je to v tomto článku obsaženo. Mockrát díky CrazyDogu *3*. S pozdravem _UnREAL

Chrome 4.0.266.0 / Windows XP
 
0/2000
Jméno*
Web
Email
Gravatar
avatar
  [f] [:)] [L] [XL] [XXL] | [b] [i] [s] [e] [*] [cite] [code] [kod] [h1] [h2] [abbr] [sup] [sub] |
 
nejoblíbenější články:
novinky na webu:
informace: