本文整理汇总了PHP中GeSHi类的典型用法代码示例。如果您正苦于以下问题:PHP GeSHi类的具体用法?PHP GeSHi怎么用?PHP GeSHi使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GeSHi类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: bb_syntax_highlight
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;
}
示例2: _highlight_code
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;
}
示例3: execute
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;
}
示例4: code
function code($source, $language)
{
$code = new GeSHi($source, $language);
$parse = $code->parse_code();
$resultat = '<div>' . '<br/>' . $parse . '</div>';
return $resultat;
}
示例5: onExtra
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;
}
示例6: highlight
/**
* 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();
}
示例7: formatCodeBlocks
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);
}
示例8: getSyntaxHighlightedContent
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);
}
示例9: JHP_Geshi_replacer
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;
}
示例10: plgContentGeshi_replacer
/**
* 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;
}
示例11: wp_syntax_highlight
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;
}
示例12: DoGeshi
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>";
}
示例13: parse
/**
* @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>';
}
}
示例14: _doGeshi
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";
}
示例15: smarty_block_code
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>';
}
}