PDA

Просмотр полной версии : BBcode class


Doom123
27.03.2008, 21:50
эм решил написать класс ббкодов...
вот что вышло ...

<?php

/**
* @author @FATAL@
* @copyright 2008
*/

class BBcode
{
private $BBarr = array(
'#\(.*?)\[/B\]#ixs' => '<b>$1</b>',
'#\(.*? \.jpg|.*? \.gif)\[/IMG\]#ixs' => '<img src="$1">',
'#\[S\](.*?)\[/S\]#ixs' => '<s>$1</s>',
'#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis' => '<a href="$1" target="_blank">$2</a>',
'#\[LEFT\](.*?)\[/LEFT\]#xis' => '<div align="left">$1</div>',
'#\[CENTER\](.*?)\[/CENTER\]#xis' => '<div align="center">$1</div>',
'#\[RIGHT\](.*?)\[/RIGHT\]#xis' => '<div align="right">$1</div>',
'#\[I\](.*?)\[/I\]#xis' => '<em>$1</em>'
);

public function bbcod($BBcode)
{
$BBcode = htmlspecialchars($BBcode);
foreach ($this->BBarr as $BB => $BBHTM)
{
if ($BB === '#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis')
{
if (preg_match('#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis', $BBcode, $pock))
{
if ($pock['2'] === '')
{
$BBcode = preg_replace($BB, '<a href="$1" target="_blank">$1</a>', $BBcode);
}

}


}
$blank = '';
while ($BBcode !== $blank)
{
$blank = $BBcode;
$BBcode = preg_replace($BB, $BBHTM, $BBcode);
}

}
echo $BBcode;
}

}
?>

жду критики....

для проверки работы


$str = "[i][b]Test";
$bb = new BBcode;
$bb->bbcod($str);