highlight_string
15 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravim mam takovy problem. Na mem webu sem si upravil "diskuzi" a chtel bych aby se v prispevcich barevne zvyraznil html kód. Mam to udelane takhle: $vypis = preg_replace("#\[kod\](.*?)\[/kod\]#si", "<pre>".highlight_string("\\1", TRUE)."</pre>", $vypis); Ale nevim proc to nefunguje... vypise to sice ...<code>....tagy..</code>... ale jedina barva co se nadefinuje je cerna a hotovo... Nevite jak to upravit aby se to obarvilo jak ma?
-
<HTML>Kod pro zvyrazneni musi byt PHP.. a to funkce rozlisi tak, ze obarvi pouze kod mezi: <?php ....... ?> Pokud to retezec neobsahuje provede se pouze zachovani formatovani.</HTML>
-
prave ze tam davam script s <?php ... ale stejne vyjede cerny... vim ze to na html nefunguje... Ale stejne to nejede...
-
Jde o to, ze do highlight_string posles '\1', a ne ten cely kod. Musis to udelat nejak takhle (je to trochu prasarna, ale funguje to): http://strelka.unas.cz/html/temp/php_highlight.php NETu zdar, SPAMu zmar!
-
Rellik, asi jsem to pochopil. Po testu ;-) $a="echo 'blbina';"; echo highlight_string($a); # tohle bude černé $a = "<?php echo 'blbina'; ?>"; echo highlight_string($a); # tohle bude barevné fakt to tak funguje.
-
<HTML>Nevsiml jsem si jak funkci highlight_string pouzivas... Pouzil bych na to callbackovou funkci: function syntax_callback($match) { return highlight_string($match[2], true); } $text = preg_replace_callback("/(\[kod\])(.+)(\[\/kod\])/s", "syntax_callback", $text);</HTML>
-
> Richard buhuzel ani tak to nejde... a navic to zastavi script hned po tom vypisu takze se zbytek stranky nenacte... >Marek z Markova Vim jak vypsat kod barevne, ale kdyby sis precetl o co mi jde tak bys vedel ze resim trochu neco jineho... ;)
-
já bych to radši řešil na víckrát: 1) vycucnu řetězec mezi [kod][/kod] do proměnné 2) obarvím obsah proměnné pomocí higlight_string() 3) nahradím [kod] ... [/kod] za <pre>.obarveny_kod.<pre> Možná že tu bude leší než s tím válčit v kupě ;)
-
>Tom Mohl by si napsat ukazku? Nejak mi to nejde dat dokupy... :)
-
Rellik: Nechce se mi nad tím moc přemýšlet, navíc ještě dělat nějaké regexpy, tak zkusím něco sesmolit sedláckou metodou: $array = explode ('[code]', $text); for($i=0;$i<count($array);$i++) { if(substr_count($array[$i],'[/code]')) { $subarray = explode ('[/code]', $array[$i]); $subarray[0] = highlight_string ($subarray[0]); $array[$i] = implode('</code>', $subarray); } } $text = implode ('<code>', $array); Je to sice běs a hrůza, ale možná že to bude taky fungovat. Jinak, pokud by jsi chtěl elefantní řešení, tak použij první popis: regexpem načti řetězec mezi [kod][/kod] do proměnné, tu obarvi, ze začátku a konce doplň o <tag> a </tag> a nakonec to nahraď. Pokud budu mít a náladu, tak ti to možná i sesmolim ;)
-
>Tom dik. az budu doma tak to skusim a napisu jak to dopadlo. A pak teprve kdybys byl tak hodny a napsal mi kod. :) Zatim diky. :)
-
>Tom Tak sem skusil ten tvuj kod, obarvi to, ale jenom pokud se mu posle jen kod kde se znaky < a > neprevedou na entity coz pri vkladani prispevku neni zrovna bezpecne... Jde nejak aby se tyto znaky pak mezi temi znackami [kod]...[/kod] prepsaly z entit zpet na < , > ? Diky. :)
-
Týjo, ono to vážně funguje? Já sem to sepsal jen tak z hlavy. Sákryš, já sem dobrej ;) Zkus třeba: $text = str_replace('<', '<', $text); $text = str_replace('&qt;', '>', $text); Jinak na tu elegantnější verzi nemám čas, před nějakou dobou jsem slíbil známými udělat web pro jeho firmu a teď jsem zjistil, že to musí být na konci února hotové a ještě jsem ani nazačal :)
-
>Tom To uz sem skousel ale vypisuju tak celou tabulku takze to nejde pouzit. Ono by to chtelo zmenit ty entitiy zpet na znaky jen mezi tim [kod] a [/kod]. Ale uvidime.. Az budu doma tak se s tim skusim pohrat vic... Tedky su na dovolene a pristup na net tu je nic moc a navic tu nemam localhost a pokusy. A porad to delat pres web se mi moc nechce... Tak zatim diky. :)
-
>Tom Tak uz sem to vyresil pomoci toho tveho scriptu.. Pridal sem tam zmenu tech entit zpet na znaky a bylo. :) Takze to zatim funguje. Ale kdybys mel pak nekdy cas na to "elegantnejsi" reseni jak si psal, tak bych byl rad kdybys ho byl ochotny napsat. Zatim diky. :)