<?php
class BBCode {
protected $bbcode_table = array();
public function __construct () {
// Replace [b]...[/b] with <strong>...</strong>
$this->bbcode_table["/\[b\](.*?)\[\/b\]/is"] = function ($match) {
return "<strong>$match[1]</strong>";
};
// Replace [i]...[/i] with <em>...</em>
$this->bbcode_table["/\[i\](.*?)\[\/i\]/is"] = function ($match) {
return "<em>$match[1]</em>";
};
// Replace [code]...
with <pre><code>...</code></pre>
$this->bbcode_table["/\[code\](.*?)\[\/code\]/is"] = function ($match) {
return "<pre><code>$match[1]</code></pre>";
};
// Replace [quote]...[/quote] with <blockquote><p>...</p></blockquote>
$this->bbcode_table["/\[quote\](.*?)\[\/quote\]/is"] = function ($match) {
return "<blockquote><p>$match[1]</p></blockquote>";
};
// Replace [quote="person"]...[/quote] with <blockquote><p>...</p></blockquote>
$this->bbcode_table["/\[quote=\"([^\"]+)\"\](.*?)\[\/quote\]/is"] = function ($match) {
return "$match[1] wrote: <blockquote><p>$match[2]</p></blockquote>";
};
// Replace ... with <span style="font-size:30%">...</span>
$this->bbcode_table["/\[size=(\d+)\](.*?)\[\/size\]/is"] = function ($match) {
return "<span style=\"font-size:$match[1]%\">$match[2]</span>";
};
// Replace with <del>
$this->bbcode_table["/\[s\](.*?)\[\/s\]/is"] = function ($match) {
return "<del>$match[1]</del>";
};
// Replace ... with <span style="text-decoration:underline;">...</span>
$this->bbcode_table["/\[u\](.*?)\[\/u\]/is"] = function ($match) {
return '<span style="text-decoration:underline;">' . $match[1] . '</span>';
};
// Replace [center]...[/center] with <div style="text-align:center;">...</div>
$this->bbcode_table["/\[center\](.*?)\[\/center\]/is"] = function ($match) {
return '<div style="text-align:center;">' . $match[1] . '</div>';
};
// Replace [right]...[/right] with <div style="text-align:right;">...</div>
$this->bbcode_table["/\[right\](.*?)\[\/right\]/is"] = function ($match) {
return '<div style="text-align:right;">' . $match[1] . '</div>';
};
// Replace [left]...[/left] with <div style="text-align:left;">...</div>
$this->bbcode_table["/\[left\](.*?)\[\/left\]/is"] = function ($match) {
return '<div style="text-align:left;">' . $match[1] . '</div>';
};
// Replace [justify]...[/justify] with <div style="text-align:justify;">...</div>
$this->bbcode_table["/\[justify\](.*?)\[\/justify\]/is"] = function ($match) {
return '<div style="text-align:justify;">' . $match[1] . '</div>';
};
// Replace [email]...[/email] with <a href="mailto:...">...</a>
$this->bbcode_table["/\[email\](.*?)\[\/email\]/is"] = function ($match) {
return "<a href=\"mailto:$match[1]\">$match[1]</a>";
};
// Replace An e-mail link with <a href="mailto:someone@somewhere.com">An e-mail link</a>
$this->bbcode_table["/\[email=(.*?)\](.*?)\[\/email\]/is"] = function ($match) {
return "<a href=\"mailto:$match[1]\">$match[2]</a>";
};
// Replace ... with <a href="...">...</a>
$this->bbcode_table["/\[url\](.*?)\[\/url\]/is"] = function ($match) {
return "<a href=\"$match[1]\">$match[1]</a>";
};
// Replace [url_blank]...[/url_blank] with <a href="...">...</a>
$this->bbcode_table["/\[url_blank\](.*?)\[\/url_blank\]/is"] = function ($match) {
return "<a href=\"$match[1]\" target=\"_blank\">$match[1]</a>";
};
// Replace A link to google with <a href="http://www.google.com/">A link to google</a>
$this->bbcode_table["/\[url=(.*?)\](.*?)\[\/url\]/is"] = function ($match) {
return "<a href=\"$match[1]\">$match[2]</a>";
};
// Replace [img]...[/img] with <img src="..."/>
$this->bbcode_table["/\[img\](.*?)\[\/img\]/is"] = function ($match) {
return "<img src=\"$match[1]\"/>";
};
// Replace
...
with <ul><li>...</li></ul>
$this->bbcode_table["/\[list\](.*?)\[\/list\]/is"] = function ($match) {
$match[1] = preg_replace_callback("/\[\*\]([^\[\*\]]*)/is", function ($submatch) {
return "<li>" . preg_replace("/[\n\r?]$/", "", $submatch[1]) . "</li>";
}, $match[1]);
function bbcode_more($stringa, $id)
{
if(strpos($stringa,"[/MORE]")){
$str=explode("[/MORE]",$stringa);
if(trim($str[0]) !="[MORE]"){//la stringa[0] è formata da [MORE] + qualcos'altro
$dopo = trim(str_replace($str[0], "<div class='post_links_more'><p><a href='news_view.php?id=$id'>Leggi Tutto</a></p></div>", $str[0]));
$prima=str_replace("[MORE]","",$str[0]);
//Ritorno il valore
return $prima."... ".$dopo;
}else{//la stringa[0] è formata solo da [MORE]
$stringa=str_replace("[MORE]","",$stringa);
$stringa=str_replace("[/MORE]","",$stringa);
return $stringa;
}
}else{
return $stringa;//se non c'è [MORE] deve tornare la stringa
}
}
function bbcode_complete($string)
{
$string = $this->replace($string);//richiami la funzione bbcode
$string = trim(str_replace("[MORE]", "", $string));
$string = trim(str_replace("[/MORE]", "", $string));
//Ritorno il valore
return $string;
}
}
?>
[/code]
<?php
require "bbcode2.php";
$text = 'Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.';
$bbcode = new BBCode;
echo $bbcode->read_more($text, 100, ' <a href="link/al/testo/completo.html">[leggi tutto]</a>');
?>
$text = testo completo
100 = numero caratteri // intero modificabile
e il 3° parametro al link, che puoi tranquillamente cambiare con $id