[Patch] HTML_BBCodeParser

From: Date: Sat, 15 May 2004 13:33:56 +0000
Subject: [Patch] HTML_BBCodeParser
Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-29265@lists.php.net to get a copy of this message
Hello, On some websites that i visit they have a modded phpBB code engine that returns syntax highlighted code of everyting between [php] and [/php]. So i wrote a litte Filter for the HTML_BBCodeParser package that does exactly the same thing.

<?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP Version 4 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2003 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.02 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Author: Tim Van Wassenhove <timvw@users.sourceforge.net> | // +----------------------------------------------------------------------+ // // $Id: PHPsource.php,v 0.1 2004/05/11 14:39:45 timvw Exp $ // /** * @package HTML_BBCodeParser * @author Tim Van Wassenhove <timvw@users.sourceforge.net> */ require_once('HTML/BBCodeParser.php'); class HTML_BBCodeParser_Filter_PHPsource extends HTML_BBCodeParser { /** * An array of tags parsed by the engine * * @access private * @var array */ var $_definedTags = array( 'php' => array( 'htmlopen' => 'div class="PHPsource"', 'htmlclose' => 'div', 'allowed' => 'none', ) ); /** * Executes statements before the actual array building starts * * This method should be overwritten in a filter if you want to do * something before the parsing process starts. This can be useful to * allow certain short alternative tags which then can be converted into * proper tags with preg_replace() calls. * The main class walks through all the filters and and calls this * method if it exists. The filters should modify their private $_text * variable. * * @return none * @access private * @see $_text * @author Tim Van Wassenhove <timvw@users.sourceforge.net> */ function _preparse() { $options = PEAR::getStaticProperty('HTML_BBCodeParser','_options'); $oe = $options['open_esc']; $ce = $options['close_esc']; $pattern = "/{$oe}php{$ce}(.*?){$oe}\/php{$ce}/si"; $this->_preparsed = preg_replace_callback($pattern,array($this,'php2html'),$this->_text); } /** * Callback function for the matches in _preparse() * * This method returns a syntax highlighted version of code * using the colors defined in the built-in syntax highlighter for PHP. * * @return none * @access private * @see $_text * @author Tim Van Wassenhove <timvw@users.sourceforge.net> */ function php2html($code) { $php = $code[1]; $options = PEAR::getStaticProperty('HTML_BBCodeParser','_options'); $o = $options['open']; $c = $options['close']; ob_start(); highlight_string($php); $html = $o . 'php' . $c . ob_get_contents(). $o . '/php' . $c; ob_end_clean(); return $html; } } ?>
« previous php.pear.dev (#29265) next »