Location: PHPKode > projects > Content*Builder > cb_pear/HTML/BBCodeParser/Filter/PHP.php
<?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          |
// | hide@address.com so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Author: Stijn de Reede <hide@address.com>                               |
// +----------------------------------------------------------------------+
//
// $Id: PHP.php,v 1.1 2004/05/26 22:05:25 cb_fog Exp $
//

/**
* @package  HTML_BBCodeParser
* @author   Stijn de Reede  <hide@address.com>
*/


require_once('HTML/BBCodeParser.php');
require_once("Text/Highlighter.php");

class HTML_BBCodeParser_Filter_PHP extends HTML_BBCodeParser
{

    /**
    * An array of tags parsed by the engine
    *
    * @access   private
    * @var      array
    */
    var $_definedTags = array(  'php' => array(   'allowed'   => 'none^img' ));


    /**
    * 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   Stijn de Reede  <hide@address.com>
    */
    function _preparse()
    {
        $options = PEAR::getStaticProperty('HTML_BBCodeParser','_options');
        $o = $options['open'];
        $c = $options['close'];
        $oe = $options['open_esc'];
        $ce = $options['close_esc'];
        
		/* Highlighter für Code */
		$hl_php = & Text_Highlighter::factory('PHP');
		
		$translationTable = get_html_translation_table(HTML_SPECIALCHARS);
		$translationTable = array_flip($translationTable);
				
		preg_match_all("/\[php](.*)\[\/php\]/miUs", $this->_text, $_pregPHPMatches);
		$text = preg_replace("/\[php](.*)\[\/php\]/miUs", "[php]", $this->_text);
		
		/* 
		* jeden Codeblock einzeln highlighten
		*/
		$_phpMatches = array();
		foreach($_pregPHPMatches[1] as $_code) {
			$_phpMatch = $hl_php->highlight(strtr(trim(preg_replace( '!<br.*>!iU', "", $_code)), $translationTable));
			$_phpMatch = '<div style="white-space:nowrap;overflow:true;scroll:auto;padding-bottom:7px;width:90%;">'.$_phpMatch.'</div>';
			$_phpMatches[] = $_phpMatch;
		}
		
		/*
		* jeden PHP Match wieder zurück in den Text parsen
		*/
		for($i = 0; $i < count($_phpMatches); $i++) {
			$text = preg_replace("/\[php]/miUs", $_phpMatches[$i], $text, 1);
		}
		
        $this->_preparsed = $text;
    }
}


?>
Return current item: Content*Builder