Oznámení

Provoz fóra byl ukončen

Fshl

před 14 lety

Beda
Člen | 3

Zdravím, pokouším se zprovoznit zvýrazňování syntaxe pomocí FSHL, ale nedaří se mi.

Stránky mám ve win-1250

// vložíme knihovnu
require_once('texy-5rc/texy/texy.php');
include_once('texy-5rc/fshl/fshl.php');
// vytvoříme objekt
$texy = &new Texy();
$texy->utf = true;
function myUserFunc(&$element) {
  $lang = strtoupper($element->lang);
  if ($lang == 'JAVASCRIPT') $lang = 'JS';
  if (!in_array(
          $lang,
          array('CPP', 'CSS', 'HTML', 'JAVA', 'PHP', 'JS', 'SQL'))
     ) return;
//  $element->tag = code;
  $parser = new fshlParser('HTML', P_TAB_INDENT);
  $element->setContent($parser->highlightString($lang, $element->content), true);
}

// set user callback function for /-- code blocks
$texy->blockModule->codeHandler = 'myUserFunc';

// a zpracujeme vstupní text
$x = stripslashes($_POST['prispevek']);
$text = $texy->process($x);

todle mně vygeneruje správnej kód ale v ISO kódování

když zaměním

$parser = new fshlParser('HTML', P_TAB_INDENT);

za

$parser = new fshlParser('HTML_UTF8', P_TAB_INDENT);

vygeneruje mi to kód se správně zobrazenejma českejma znakama, ale chybí ukončovací značky

</code></pre>

a není tam ani

<!-- generated by Texy! -->

Můžete mi prosím někdo poradit co mam špatně?

před 14 lety

Beda
Člen | 3

Asi bude problém s Fshl…
Uvnitř jsem asi našel ten kámen úrazu:

$word = htmlEntities($word);

Když se nastaví

$word = htmlEntities($word, ENT_COMPAT, 'ISO-8859-1');

nebo

$word = htmlEntities($word, ENT_COMPAT, 'cp1251');

je vše v pořádku (až na české znaky, cp1250 to neumí), ale při

$word = htmlEntities($word, ENT_COMPAT, 'UTF8');

chybějí ve vygenerovaném kódu ukončovací značky i podpis Texy!

</code></pre> <!-- generated by Texy! -->

Jsem z toho ještě zmatenější než předtím.

před 13 lety

David Grudl
Nette Core | 6806

musí tam být UTF-8, tedy s pomlčkou