function bb_syntax_highlight($match) { global $bb_syntax_matches; $i = intval($match[1]); $match = $bb_syntax_matches[$i]; $language = strtolower(trim($match[1])); $line = trim($match[2]); $escaped = trim($match[3]); $code = bb_syntax_code_trim($match[4]); //if ($escaped == "true") $code = htmlspecialchars_decode($code); $code = htmlspecialchars_decode($code); //$code = str_replace("<", "<", $code); //$code = str_replace(">", ">", $code); $geshi = new GeSHi($code, $language); $geshi->enable_keyword_links(false); do_action_ref_array('bb_syntax_init_geshi', array(&$geshi)); $output = "\n<div class=\"bb_syntax\">"; if ($line) { $output .= "<table><tr><td class=\"line_numbers\">"; $output .= bb_syntax_line_numbers($code, $line); $output .= "</td><td class=\"code\">"; $output .= $geshi->parse_code(); $output .= "</td></tr></table>"; } else { $output .= "<div class=\"code\">"; $output .= $geshi->parse_code(); $output .= "</div>"; } $output .= "</div>\n"; return $output; }
function _highlight_code($contents, $language, $line_number, $inline_code) { $contents = htmlspecialchars_decode($contents); if (strtolower($language) == 'bbcode') { import('content/parser/bbcode_highlighter'); $bbcode_highlighter = new BBCodeHighlighter(); $bbcode_highlighter->set_content($contents, PARSER_DO_NOT_STRIP_SLASHES); $bbcode_highlighter->parse($inline_code); $contents = $bbcode_highlighter->get_content(DO_NOT_ADD_SLASHES); } elseif (strtolower($language) == 'tpl' || strtolower($language) == 'template') { import('content/parser/template_highlighter'); require_once PATH_TO_ROOT . '/kernel/framework/content/geshi/geshi.php'; $template_highlighter = new TemplateHighlighter(); $template_highlighter->set_content($contents, PARSER_DO_NOT_STRIP_SLASHES); $template_highlighter->parse($line_number ? GESHI_NORMAL_LINE_NUMBERS : GESHI_NO_LINE_NUMBERS, $inline_code); $contents = $template_highlighter->get_content(DO_NOT_ADD_SLASHES); } elseif ($language != '') { require_once PATH_TO_ROOT . '/kernel/framework/content/geshi/geshi.php'; $Geshi = new GeSHi($contents, $language); if ($line_number) { $Geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); } if ($inline_code) { $Geshi->set_header_type(GESHI_HEADER_NONE); } $contents = '<pre style="display:inline;">' . $Geshi->parse_code() . '</pre>'; } else { $highlight = highlight_string($contents, true); $font_replace = str_replace(array('<font ', '</font>'), array('<span ', '</span>'), $highlight); $contents = preg_replace('`color="(.*?)"`', 'style="color:$1"', $font_replace); } return $contents; }
public function execute() { if (false === Common::isFile(GWF_GESHI_PATH)) { return ''; // FIXME: {gizmore} log it? GESHI_PATH is may not readable } require_once GWF_GESHI_PATH; $geshi = new GeSHi(); $langs = $geshi->get_supported_languages(false); $key = htmlspecialchars(Common::getGetString('key', ''), ENT_QUOTES); sort($langs); // $this->niceArray($langs, false, '-------') $this->niceArray($langs, 'python', 'Python'); $this->niceArray($langs, 'perl', 'Perl'); $this->niceArray($langs, 'cpp', 'CPP'); $this->niceArray($langs, 'php', 'PHP'); $back = $this->module->lang('th_lang') . ':' . PHP_EOL; $back .= '<select id="bb_code_lang_sel_' . $key . '">' . PHP_EOL; $back .= '<option value="0">' . $this->module->lang('th_lang') . '</option>' . PHP_EOL; foreach ($langs as $lang) { $back .= sprintf('<option value="%s">%s</option>', $lang, $lang) . PHP_EOL; } $back .= '</select>' . PHP_EOL; $back .= $this->module->lang('th_title') . ': <input type="text" id="bb_code_title_' . $key . '" size="20" value="" />' . PHP_EOL; $back .= '<input type="submit" value="' . $this->module->lang('btn_code') . '" onclick="return bbInsertCodeNow(\'' . $key . '\');" />' . PHP_EOL; return $back; }
function code($source, $language) { $code = new GeSHi($source, $language); $parse = $code->parse_code(); $resultat = '<div>' . '<br/>' . $parse . '</div>'; return $resultat; }
function onExtra($name) { $output = NULL; if ($name == "header") { if (!$this->yellow->config->get("highlightStylesheetDefault")) { $locationStylesheet = $this->yellow->config->get("serverBase") . $this->yellow->config->get("pluginLocation") . "highlight.css"; $fileNameStylesheet = $this->yellow->config->get("pluginDir") . "highlight.css"; if (is_file($fileNameStylesheet)) { $output = "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"{$locationStylesheet}\" />\n"; } } else { $geshi = new GeSHi(); $geshi->set_language_path($this->yellow->config->get("pluginDir") . "/highlight/"); foreach ($geshi->get_supported_languages() as $language) { if ($language == "geshi") { continue; } $geshi->set_language($language); $output .= $geshi->get_stylesheet(false); } $output = "<style type=\"text/css\">\n{$output}</style>"; } } return $output; }
/** * Highlight a given piece of source code. * Works for xhtml only. Falls back to original highlighter for * other formats. * * @param string $text Text to highlight * @param string $role Source code role to use (php, xml, html, ...) * @param string $format Output format (pdf, xhtml, troff, ...) * * @return string Highlighted code */ public function highlight($text, $role, $format) { $geshi = new \GeSHi($text, $role); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $geshi->set_header_type(GESHI_HEADER_DIV); return $geshi->parse_code(); }
protected function formatCodeBlocks($source){ return preg_replace_callback('/<code>([\s\S]*?)<\/code>/', function($matches){ $geshi = new GeSHi($matches[1], 'javascript'); $geshi->enable_classes(); return $geshi->parse_code(); }, $source); }
public function getSyntaxHighlightedContent($content, $type) { //$content = ; //return array('<pre>' . $content . '</pre>', 'none'); //error_log("content len=" . strlen($content)); // サイズがでかすぎたら syntax highlight ナシ if (strlen($content) > 1 << 15) { error_log($content); return array('<pre>' . htmlspecialchars($content, ENT_QUOTES) . '</pre>', 'none'); } if ($type == '__pastit_type_none__') { $type = 'none'; // auto detect $first_line = explode(PHP_EOL, $content); $first_line = $first_line[0]; if (preg_match('@#!.+bin/(\\w+)@', $first_line, $m)) { $type = $m[1]; } if (preg_match('@#!.+bin/env\\s+(\\w+)@', $first_line, $m)) { $type = $m[1]; } if (preg_match('@\\+\\+\\+@', $content) && preg_match('@\\-\\-\\-@', $content)) { $type = 'diff'; } } require_once 'geshi/geshi.php'; $geshi = new GeSHi($content, $type); $geshi->set_overall_style('font-family: menlo, monaco, \'courier new\', mono-space;'); $content = $geshi->parse_code(); //return '<pre class=" superpre">' . PHP_EOL . $body . '</pre>'; return array($content, $type); }
function JHP_Geshi_replacer(&$matches) { // print_r($matches); //// die(); jimport('geshi.geshi'); jimport('domit.xml_saxy_shared'); $args = SAXY_Parser_Base::parseAttributes($matches[1]); // print_r($args); $text = $matches[2]; $lang = JArrayHelper::getValue($args, 'lang', 'phpz'); $lines = JArrayHelper::getValue($args, 'lines', 'true'); $html_entities_match = array("|\\<br \\/\\>|", "#<#", "#>#", "|'|", '#"#', '# #'); $html_entities_replace = array("\n", '<', '>', "'", '"', ' '); $text = preg_replace($html_entities_match, $html_entities_replace, $text); $text = str_replace('<', '<', $text); $text = str_replace('>', '>', $text); $text = str_replace("\t", ' ', $text); $geshi = new GeSHi($text, $lang); if ($lines == 'true') { $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS); } $text = $geshi->parse_code(); $text = '???' . $text . '???'; return $text; }
/** * Replaces the matched tags an image * @param array An array of matches (see preg_match_all) * @return string */ function plgContentGeshi_replacer(&$matches) { $params =& $GLOBALS['_MAMBOT_GESHI_PARAMS']; jimport('geshi.geshi'); jimport('domit.xml_saxy_shared'); $args = SAXY_Parser_Base::parseAttributes($matches[1]); $text = $matches[2]; $lang = JArrayHelper::getValue($args, 'lang', 'php'); $lines = JArrayHelper::getValue($args, 'lines', 'false'); $html_entities_match = array("|\\<br \\/\\>|", "#<#", "#>#", "|'|", '#"#', '# #'); $html_entities_replace = array("\n", '<', '>', "'", '"', ' '); $text = preg_replace($html_entities_match, $html_entities_replace, $text); $text = str_replace('<', '<', $text); $text = str_replace('>', '>', $text); /* // Replace 2 spaces with " " so non-tabbed code indents without making huge long lines. $text = str_replace(" ", " ", $text); // now Replace 2 spaces with " " to catch odd #s of spaces. $text = str_replace(" ", " ", $text); */ // Replace tabs with " " so tabbed code indents sorta right without making huge long lines. //$text = str_replace("\t", " ", $text); $text = str_replace("\t", ' ', $text); $geshi = new GeSHi($text, $lang); if ($lines == 'true') { $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); } $text = $geshi->parse_code(); return $text; }
function wp_syntax_highlight($match) { global $wp_syntax_matches; $i = intval($match[1]); $match = $wp_syntax_matches[$i]; $language = strtolower(trim($match[1])); $line = trim($match[2]); $code = wp_syntax_code_trim($match[3]); $geshi = new GeSHi($code, $language); $geshi->enable_keyword_links(false); do_action_ref_array('wp_syntax_init_geshi', array(&$geshi)); $output = "\n<div class=\"wp_syntax\">"; if ($line) { $output .= "<table><tr><td class=\"line_numbers\">"; $output .= wp_syntax_line_numbers($code, $line); $output .= "</td><td class=\"code\">"; $output .= $geshi->parse_code(); $output .= "</td></tr></table>"; } else { $output .= "<div class=\"code\">"; $output .= $geshi->parse_code(); $output .= "</div>"; } return $output .= "</div>\n"; return $output; }
function DoGeshi($code) { $geshi = new GeSHi(trim($code), "html4strict", null); $geshi->set_header_type(GESHI_HEADER_NONE); $geshi->enable_classes(); return "<span class=\"geshi\">" . str_replace("\n", "", $geshi->parse_code()) . "</span>"; }
/** * @desc Highlights the code. It uses the geshi HTML syntax highlighter and then it highlights the specific template syntax. * @param int $line_number GESHI_NO_LINE_NUMBERS => no line numbers, GESHI_NORMAL_LINE_NUMBERS line numbers. * @param bool $inline_code true if it's a sigle line code, otherwise false. */ public function parse($line_number = GESHI_NO_LINE_NUMBERS, $inline_code = false) { //The template language of PHPBoost contains HTML. We first ask to highlight the html code. require_once PATH_TO_ROOT . '/kernel/lib/php/geshi/geshi.php'; $geshi = new GeSHi($this->content, 'html'); if ($line_number) { $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); } //GeSHi must not put any div or pre tag before and after the content if ($inline_code) { $geshi->set_header_type(GESHI_HEADER_NONE); } $this->content = $geshi->parse_code(); //Now we highlight the specific syntax of PHPBoost templates //Conditionnal block $this->content = preg_replace('`# IF ( NOT)? ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">IF$1</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$2</span><span style="' . self::TPL_VARIABLE_STYLE . '">$3</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); $this->content = preg_replace('`# ELSEIF ( NOT)? ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">ELSEIF$1</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$2</span><span style="' . self::TPL_VARIABLE_STYLE . '">$3</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); $this->content = str_replace('# ELSE #', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">ELSE</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); $this->content = str_replace('# ENDIF #', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">ENDIF</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); //Loops $this->content = preg_replace('`# START ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">START</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); $this->content = preg_replace('`# END ((?:\\w+\\.)*)(\\w+) #`i', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">END</span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); //Inclusions $this->content = preg_replace('`# INCLUDE ((?:\\w+\\.)*)([\\w]+) #`', '<span style="' . self::TPL_SHARP_STYLE . '">#</span> <span style="' . self::TPL_KEYWORD_STYLE . '">INCLUDE </span> <span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span> <span style="' . self::TPL_SHARP_STYLE . '">#</span>', $this->content); //Simple variable $this->content = preg_replace('`{([\\w]+)}`i', '<span style="' . self::TPL_BRACES_STYLE . '">{</span><span style="' . self::TPL_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_BRACES_STYLE . '">}</span>', $this->content); //Loop variable $this->content = preg_replace('`{((?:[\\w]+\\.)+)([\\w]+)}`i', '<span style="' . self::TPL_BRACES_STYLE . '">{</span><span style="' . self::TPL_NESTED_VARIABLE_STYLE . '">$1</span><span style="' . self::TPL_VARIABLE_STYLE . '">$2</span><span style="' . self::TPL_BRACES_STYLE . '">}</span>', $this->content); if ($inline_code) { $this->content = '<pre style="display:inline; font-color:courier new;">' . $this->content . '</pre>'; } }
function _doGeshi($shebangMatch) { $language = $shebangMatch['lang']; $line = (int) ($shebangMatch['linenumber'] > 1 ? $shebangMatch['linenumber'] : 0); $codeblock = $shebangMatch['code']; $highlighter = new GeSHi($this->outdent(trim($codeblock)), $language); $highlighted = $highlighter->parse_code(); if ($line) { preg_match('!^(\\s*<pre[^>]+>)(.*)(</pre>)!s', $highlighted, $m); $ret = '<ol'; if ($line) { $ret .= ' start="' . $line . '"'; } $ret .= '>'; $ret .= preg_replace('/.+(\\n|$)/', '<li>$0</li>', $m[2]); $ret .= '</ol>'; $ret = $m[1] . $ret . $m[3]; } else { $ret = $highlighted; } if ($shebangMatch['params']) { $ret = $this->_processGeshiParams($ret, $shebangMatch['params']); } return "\n\n" . $this->hashBlock($ret) . "\n\n"; }
function smarty_block_code($params, $content, Smarty_Internal_Template $template, $open) { if ($open) { return ''; } else { $language = isset($params['language']) ? (string) $params['language'] : null; $classes = array(); if ($language) { $classes[] = $language; } if (!empty($params['class'])) { $classes[] = $params['class']; } $content = trim($content, "\n\r"); $content = rtrim($content); $rows = preg_split("#[\n\r]#", $content); preg_match('#^\\s+#', reset($rows), $matches); if ($matches) { $whitespace = $matches[0]; foreach ($rows as &$row) { $row = preg_replace('#^' . $whitespace . '#', '', $row); } } $content = implode(PHP_EOL, $rows); $content = trim($content, "\n\r"); $geshi = new GeSHi($content, $language); $geshi->keyword_links = false; $geshi->set_tab_width(4); $geshi->set_header_type(GESHI_HEADER_NONE); return '<code class="' . implode(' ', $classes) . '">' . $geshi->parse_code() . '</code>'; } }
function _codeBlockHighlighter($codeblock, &$clear) { $split = preg_split('/[\\r\\n]/', $codeblock, 2, PREG_SPLIT_NO_EMPTY); if (count($split) == 2 && preg_match('/^\\s*((\\\\){0,2}\\[([a-zA-Z0-9\\-_]+)\\]\\s*)/', $split[0], $matches)) { if ($matches[2] == '\\') { $codeblock = substr($codeblock, 1); return $codeblock; } $strlen = strlen($matches[0]); $parser = strtolower($matches[3]); $codeblock = $split[1]; if ($strlen > 0) { if ($parser == 'console') { $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES); $codeblock = preg_replace_callback('/^\\n+/', array($this, '_doFencedCodeBlocks_newlines'), $codeblock); $codeblock = "<pre class=\"console\"><code>{$codeblock}</code></pre>"; } else { $codeblock = preg_replace('/\\n+$/', '', $codeblock); $geshi = new GeSHi($codeblock, $parser); $geshi->set_overall_style(''); $codeblock = $geshi->parse_code(); } $clear = false; } } return $codeblock; }
/** * Highlight code with style * * @param string $value Full source text * * @return string */ public function highlightCode($value) { $text = preg_replace_callback(self::$pattern, function ($data) { $geshi = new \GeSHi($data[2], $data[1]); return $geshi->parse_code(); }, $value); return $text; }
public static function codeShortcode($options, $content) { include_once __DIR__ . '/vendor/geshi-1.0.8.15/geshi.php'; $name = empty($options[0]) ? 'text' : $options[0]; $geshi = new GeSHi(trim($content), $name); #$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS); return sprintf('<div class="highlight highlight-%s">%s</div>', $name, $geshi->parse_code()); }
/** * @param string $sContent * @param string $sLanguage * @return string */ public function parseGeshi($sContent, $sLanguage, $bUseClasses = false) { $oGeshi = new \GeSHi($sContent, $sLanguage); if ($bUseClasses) { $oGeshi->enable_classes(); } return $oGeshi->parse_code(); }
public function getFormatedCode(){ $content=$this->content(); $content=str_replace(array("<", ">", '&', ''', '"','<', '>'), array("<", ">",'&','\'','"','<','>'), htmlspecialchars_decode($content, ENT_NOQUOTES)); $geshi = new GeSHi($content, $this->codeLanguage); $value= $geshi->parse_code(); return ($value); }
function syntaxHighlight($matches) { $geshi = new GeSHi($matches[3], empty($matches[2]) ? "txt" : $matches[2]); $geshi->enable_classes(); $geshi->set_overall_style(""); // empty style return $geshi->parse_code(); }
/** * Compiles the node to PHP. * * @param \Twig_Compiler A Twig_Compiler instance */ public function compile(\Twig_Compiler $compiler) { $source = trim($this->getNode('body')->getAttribute('data')); $name = $this->getAttribute('name'); $geshi = new \GeSHi($source, $name); #$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS); $parsedCode = sprintf('<div class="highlight highlight-%s">%s</div>', $name, $geshi->parse_code()); $compiler->addDebugInfo($this)->write('echo ')->string($parsedCode)->raw(";\n"); }
/** * Method highlights single code block. If the language file is overriden * in sfGeshiPlugin/lib/custom directory, it uses it. Otherwise, it uses * default GeSHi language file from its lib. * * @param String $code - code block. * @param String $language - language name of the code block. */ public static function parse_single($code, $language) { $geshi_object = new GeSHi($code, $language); $alternative_directory = GESHI_LANG_ROOT . '../../custom/'; $alternative_file = $alternative_directory . strtolower($language) . '.php'; if (file_exists($alternative_file)) { $geshi_object->set_language_path($alternative_directory); } return $geshi_object->parse_code(); }
static function generic_render_code($source, $lang, $line_numbers = false) { require_once self::$geshi_file; $geshi = new GeSHi($source, $lang); if ($line_numbers) { $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); } $geshi->enable_keyword_links(false); return $geshi->parse_code(); }
/** * @param string $arguments array with the type * @param array $code string of the code to parse * @param \ShortcodeParser $parser Parser root user. * @param string $shortcode * @param array $extra * * @return String of parsed code. */ public static function handle_shortcode($arguments, $code, $parser, $shortcode, $extra = array()) { if (!isset($arguments['type'])) { /** Assuming most code is PHP. Feel free to update. Should this be a configurable? */ $arguments['type'] = 'php'; } $geshi = new \GeSHi(html_entity_decode(str_replace('<br>', "\n", $code)), $arguments['type']); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); return $geshi->parse_code(); }
function render_code(&$renderer, $code, $lang) { // code $renderer->doc .= "<div class=\"code_block_code\">"; $geshi = new GeSHi($code, $lang); $geshi->set_header_type(GESHI_HEADER_DIV); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $renderer->doc .= $geshi->parse_code(); $renderer->doc .= "</div>"; }
function markdown_code_highlighter($code, $language, $rss = false) { $code = stripslashes(trim(htmlspecialchars_decode($code, ENT_NOQUOTES))); $geshi = new GeSHi($code, $language); if ($rss == false) { $geshi->set_header_type(GESHI_HEADER_NONE); $geshi->enable_classes(); } return '<pre class="lang-' . $language . '"><code>' . $geshi->parse_code() . '</code></pre>'; }
function source_highlighter($code) { $source = str_replace(array(">", "<", """, "&"), array(">", "<", "\"", "&"), $code[1]); if (false !== stristr($code[0], "[php]")) { $lang2geshi = "php"; } elseif (false !== stristr($code[0], "[sql]")) { $lang2geshi = "sql"; } elseif (false !== stristr($code[0], "[html]")) { $lang2geshi = "html4strict"; } else { $lang2geshi = "txt"; } $geshi = new GeSHi($source, $lang2geshi); $geshi->set_header_type(GESHI_HEADER_PRE_VALID); $geshi->set_overall_style('font: normal normal 100% monospace; color: #000066;', false); $geshi->set_line_style('color: #003030;', 'font-weight: bold; color: #006060;', true); $geshi->set_code_style('color: #000020;font-family:monospace; font-size:12px;line-height:6px;', true); //$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $geshi->enable_classes(false); $geshi->set_link_styles(GESHI_LINK, 'color: #000060;'); $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;'); $return = "<div class=\"codetop\">CODE</div><div class=\"codemain\">\n"; $return .= $geshi->parse_code(); $return .= "\n</div>\n"; return $return; }
function geshi_syntax($pockets) { $source = $pockets[2]; //второй карман - то что внутри <pre lang="***"> - </pre> $language = $pockets[1]; //первый карман - язык подсветки lang="язык" $geshi = new GeSHi($source, $language); //используем библиотеку подсветки //и возвращаем подсвеченный участок кода return '<br/><div class="wp_syntax"><div class="code">' . $geshi->parse_code() . '</div></div>'; }
function task_modifier_scan_text($string) { $CI =& get_instance(); $CI->config->load('geshi'); $highlight_map = $CI->config->item('geshi_highlighting_map'); $html = str_get_html($string, true, true, DEFAULT_TARGET_CHARSET, false); foreach ($html->find('pre br') as $br) { $br->outertext = "\n"; } foreach ($html->find('pre.highlight') as $highlighted_code) { $lang = $highlighted_code->lang; if (isset($highlight_map[$lang])) { $content = str_replace(' ', ' ', htmlspecialchars_decode(strip_tags($highlighted_code->innertext), ENT_HTML5 | ENT_QUOTES)); $geshi = new GeSHi($content, $highlight_map[$lang]); $geshi->set_header_type(GESHI_HEADER_PRE_VALID); $geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS); $highlighted_code->innertext = $geshi->parse_code(); $highlighted_code->lang = null; } else { $highlighted_code->lang = null; $highlighted_code->class = null; } } ob_start(); echo $html; return ob_get_clean(); }