mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-02 14:57:37 +02:00
It's here and it's awesome!
git-svn-id: file:///svn/phpbb/trunk@8476 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
241
phpBB/includes/bbcode/bbcode_parser.php
Normal file
241
phpBB/includes/bbcode/bbcode_parser.php
Normal file
@@ -0,0 +1,241 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version
|
||||
* @copyright (c) 2005 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* The phpBB version of the BBCode parser
|
||||
*
|
||||
*/
|
||||
class phpbb_bbcode_parser extends phpbb_bbcode_parser_base
|
||||
{
|
||||
private $list_stack = array();
|
||||
protected $tags = array();
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->tags = array(
|
||||
// The exact B BBcode from phpBB
|
||||
'b' => array(
|
||||
'replace' => '<span style="font-weight: bold">',
|
||||
'close' => '</span>',
|
||||
'attributes' => array(),
|
||||
'children' => array(true, 'quote' => true, 'code' => true, 'list' => true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
// The exact I BBcode from phpBB
|
||||
'i' => array(
|
||||
'replace' => '<span style="font-style: italic">',
|
||||
'close' => '</span>',
|
||||
'attributes' => array(),
|
||||
'children' => array(true, 'quote' => true, 'code' => true, 'list' => true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
// The exact U BBcode from phpBB
|
||||
'u' => array(
|
||||
'replace' => '<span style="text-decoration: underline">',
|
||||
'close' => '</span>',
|
||||
'attributes' => array(),
|
||||
'children' => array(true, 'quote' => true, 'code' => true, 'list' => true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
|
||||
// Quote tag attempt.
|
||||
'quote' => array(
|
||||
'replace' => '<div class="quotetitle">{_}</div><div class="quotecontent">',
|
||||
'close' => '</div>',
|
||||
'attributes' => array(
|
||||
'_' => array(
|
||||
'replace' => '%s wrote:',
|
||||
),
|
||||
),
|
||||
'children' => array(true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
|
||||
// code tag (without the =php functionality)
|
||||
'code' => array(
|
||||
'replace' => '<div class="codetitle"><b>Code:</b></div><div class="codecontent">',
|
||||
'close' => '</div>',
|
||||
'attributes' => array(),
|
||||
'children' => array(false),
|
||||
'parents' => array(true),
|
||||
),
|
||||
|
||||
// list tag
|
||||
'list' => array(
|
||||
'replace' => '',
|
||||
'replace_func' => array($this, 'list_open'),
|
||||
'close' => '',
|
||||
'close_func' => array($this, 'list_close'),
|
||||
'attributes' => array(
|
||||
'_' => array(
|
||||
'replace' => '',
|
||||
),
|
||||
),
|
||||
'children' => array(false, 'li' => true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
|
||||
// The exact * tag from phpBB. "*" is not a valid tag name in this parser... introducing li from HTML!
|
||||
'li' => array(
|
||||
'replace' => '<li>',
|
||||
'close' => '</li>',
|
||||
'close_shadow' => true,
|
||||
'attributes' => array(),
|
||||
'children' => array(true, 'li' => true),
|
||||
'parents' => array(false, 'list' => true),
|
||||
),
|
||||
|
||||
// Almost exact img tag from phpBB...
|
||||
'img' => array(
|
||||
'replace' => '<img alt="Image" src="',
|
||||
'close' => '" />',
|
||||
'attributes' => array(
|
||||
'__' => array(
|
||||
'replace' => '%s',
|
||||
),
|
||||
),
|
||||
'children' => array(false),
|
||||
'parents' => array(true),
|
||||
|
||||
),
|
||||
|
||||
'url' => array(
|
||||
'replace' => '',
|
||||
'replace_func' => array($this, 'url_tag'),
|
||||
'close' => '</a>',
|
||||
'attributes' => array(
|
||||
// The replace value is not important empty because the replace_func handles this.
|
||||
'_' => array(
|
||||
'replace' => '',
|
||||
),
|
||||
'__' => array(
|
||||
'replace' => '',
|
||||
),
|
||||
),
|
||||
'children' => array(false),
|
||||
'parents' => array(true),
|
||||
|
||||
),
|
||||
|
||||
'color' => array(
|
||||
'replace' => '<span style="color: {_}">',
|
||||
'close' => '</span>',
|
||||
'attributes' => array(
|
||||
'_' => array(
|
||||
'replace' => '%s',
|
||||
'required' => true
|
||||
),
|
||||
),
|
||||
'children' => array(true, 'color' => true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
|
||||
'size' => array(
|
||||
'replace' => '<span style="font-size: {_}px; line-height: normal">',
|
||||
'close' => '</span>',
|
||||
'attributes' => array(
|
||||
'_' => array(
|
||||
'replace' => '%s',
|
||||
'required' => true
|
||||
),
|
||||
),
|
||||
'children' => array(true, 'size' => true),
|
||||
'parents' => array(true),
|
||||
),
|
||||
|
||||
|
||||
// FLASH tag implementation attempt.
|
||||
'flash' => array(
|
||||
'replace' => '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"{w}{h}>
|
||||
<param name="movie" value="{m}" />
|
||||
<param name="quality" value="high" />
|
||||
<embed src="{m}" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"{w}{h}>
|
||||
</embed>
|
||||
</object>',
|
||||
'close' => false,
|
||||
'attributes' => array(
|
||||
'm' => array(
|
||||
'replace' => '%s',
|
||||
'required' => true,
|
||||
),
|
||||
'w' => array(
|
||||
'replace' => ' width="%s"',
|
||||
'type_check' => 'ctype_digit',
|
||||
),
|
||||
'h' => array(
|
||||
'replace' => ' height="%s"',
|
||||
'type_check' => 'ctype_digit',
|
||||
),
|
||||
),
|
||||
'children' => array(false),
|
||||
'parents' => array(true),
|
||||
),
|
||||
// The spoiler tag from area51.phpbb.com :p
|
||||
'spoiler' => array(
|
||||
'replace' => '<span class="quotetitle"><b>Spoiler:</b></span><span style="background-color:white;color:white;">',
|
||||
'close' => '</span>',
|
||||
'attributes' => array(),
|
||||
'children' => array(false),
|
||||
'parents' => array(true),
|
||||
),
|
||||
// a noparse tag
|
||||
'noparse' => array(
|
||||
'replace' => '',
|
||||
'close' => '',
|
||||
'attributes' => array(),
|
||||
'children' => array(false),
|
||||
'parents' => array(true),
|
||||
),
|
||||
);
|
||||
$this->smilies = array(
|
||||
':)' => '<img src="http://area51.phpbb.com/phpBB/images/smilies/icon_e_smile.gif" />',
|
||||
':(' => '<img src="http://area51.phpbb.com/phpBB/images/smilies/icon_e_sad.gif" />',
|
||||
);
|
||||
|
||||
$this->text_callback = 'strtoupper';
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
|
||||
protected function url_tag(array $attributes = array(), array $definition = array())
|
||||
{
|
||||
if (isset($attributes['_']))
|
||||
{
|
||||
return '<a href="' . $attributes['_'] . '">';
|
||||
}
|
||||
return '<a href="' . $attributes['__'] . '">';
|
||||
}
|
||||
|
||||
protected function list_open(array $attributes = array(), array $definition = array())
|
||||
{
|
||||
if (isset($attributes['_']))
|
||||
{
|
||||
return '<ol style="list-style-type: ' . $attributes['_'] . '">';
|
||||
}
|
||||
return '<ul>';
|
||||
}
|
||||
|
||||
protected function list_close(array $attributes = array())
|
||||
{
|
||||
if (isset($attributes['_']))
|
||||
{
|
||||
return '</ol>';
|
||||
}
|
||||
return '</ul>';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user