Autor Zpráva
Someone
Profil
Dobrý den, do teď jsem pro zvýrazňování syntaxe v PHP používal přímo PHP funkci highlight_String(). Nyní jsem se rohodl ukládat texty do DB, což znamená, že funkci highlight_String() nemůžu používat přímo v textu. Tak jsem se pokusil sestavit něco s BBCode... nejdříve jsem zkoušel funkci preg_match, ta ovšem nepodporuje aby text, který má nahradi text původní byl vygenerován funkcí. Tak jsem se dostal až k funkci preg_match_callback()... A sestavil jsem toto:
<?php
function zvyraznit($co) {
  $text = highlight_String("<?php\n".$co[2]."?>");
  return $text;
}
$text = "<p>echo\"SEDMMMM\"; ghuihguig echo\"SOSM\";</p>";
$text = preg_replace_callback("/(\[pre\])+(.*?)(\[\/pre\])+/","zvyraznit",$text);
echo '
      <div class="obsah">
      '.$text.'
      </div>
';
?>
Avšak k mému zklamání tento kód vyplodí toto:

<code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo</span><span style="color: #DD0000">"SEDMMMM"</span><span style="color: #007700">;</span><span style="color: #0000BB">?&gt;</span>
</span>
</code><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo</span><span style="color: #DD0000">"SOSM"</span><span style="color: #007700">;</span><span style="color: #0000BB">?&gt;</span>
</span>
</code>
      <div class="obsah">
      <p>1 ghuihguig 1</p>
      </div>
Text převedený funkcí highlight_string() se mi vypíše na začátek souboru... Zkoušel jsem i tuto šílenost:

echo '
      <div class="obsah">
      '.preg_replace_callback("/(\[pre\])+(.*?)(\[\/pre\])+/",function($shody) {return highlight_string($shody[2]);},"<p>echo\"SEDMMMM\"; ghuihguig echo\"SOSM\";</p>").'
      </div>
';

Také nepomohlo... prosím vás, nevíte co s tím?
Tori
Profil
Someone:
Koukněte se, k čemu je druhý parametr highlight_string.
Someone
Profil
Ve snu by mě nenapadlo, že je defaultně nastavené printování.. Děkuju moc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0