diff --git a/include/text.php b/include/text.php index 16c0845ac..9b34b0884 100644 --- a/include/text.php +++ b/include/text.php @@ -2097,33 +2097,44 @@ function format_network_name($network, $url = 0) { function text_highlight($s,$lang) { if($lang === 'js') $lang = 'javascript'; + if(! strpos('Text_Highlighter',get_include_path())) { set_include_path(get_include_path() . PATH_SEPARATOR . 'library/Text_Highlighter'); } + require_once('library/Text_Highlighter/Text/Highlighter.php'); require_once('library/Text_Highlighter/Text/Highlighter/Renderer/Html.php'); $options = array( 'numbers' => HL_NUMBERS_LI, 'tabsize' => 4, ); + $tag_added = false; $s = trim(html_entity_decode($s,ENT_COMPAT)); $s = str_replace(" ","\t",$s); + + // The highlighter library insists on an opening php tag for php code blocks. If + // it isn't present, nothing is highlighted. So we're going to see if it's present. + // If not, we'll add it, and then quietly remove it after we get the processed output back. + if($lang === 'php') { if(strpos('setRenderer($renderer); - $o = $hl->highlight($s); - $o = str_replace([" ","\n"],["    ",''],$o); - if($tag_added) { - $b = substr($o,0,strpos($o,'
  • ')); - $e = substr($o,strpos($o,'
  • ')); - $o = $b . $e; - } + $o = $hl->highlight($s); + $o = str_replace([" ","\n"],["    ",''],$o); + + if($tag_added) { + $b = substr($o,0,strpos($o,'
  • ')); + $e = substr($o,strpos($o,'
  • ')); + $o = $b . $e; + } + return('' . $o . ''); }