function แปลง BB code ระหว่าง php กับ html สำเร็จรูป
หน้าแรก PHP MySQL เกร็ดความรู้ function แปลง BB code ระหว่าง php กับ html สำเร็จรูป
<?php
function bbcode_format ($str) {
// $str = htmlentities($str); ภาษาไทยจะเพี้ยน
$str = htmlspecialchars($str);
$simple_search = array(
//added line break
'/[br]/is',
'/[b](.*?)[/b]/is',
'/[i](.*?)[/i]/is',
'/[u](.*?)[/u]/is',
'/[url=(.*?)](.*?)[/url]/is',
'/[url](.*?)[/url]/is',
'/[align=(left|center|right)](.*?)[/align]/is',
'/[img](.*?)[/img]/is',
'/[mail=(.*?)](.*?)[/mail]/is',
'/[mail](.*?)[/mail]/is',
'/[font=(.*?)](.*?)[/font]/is',
'/[size=(.*?)](.*?)[/size]/is',
'/[color=(.*?)](.*?)[/color]/is',
//added textarea for code presentation
'/[codearea](.*?)[/codearea]/is',
//added pre class for code presentation
'/[code](.*?)[/code]/is',
//added paragraph
'/[p](.*?)[/p]/is',
);
$simple_replace = array(
//added line break
'<br />',
'<strong>$1</strong>',
'<em>$1</em>',
'<u>$1</u>',
// added nofollow to prevent spam
'<a href="$1" rel="nofollow" title="$2 - $1" target="_blank">$2</a>',
'<a href="$1" rel="nofollow" title="$1" target="_blank">$1</a>',
'<div style="text-align: $1;">$2</div>',
//added alt attribute for validation
'<img src="$1" alt="" />',
'<a href="mailto:$1" target="_blank">$2</a>',
'<a href="mailto:$1" target="_blank">$1</a>',
'<span style="font-family: $1;">$2</span>',
'<span style="font-size: $1;">$2</span>',
'<span style="color: $1;">$2</span>',
//added textarea for code presentation
'<textarea class="code_container" rows="30" cols="70">$1</textarea>',
//added pre class for code presentation
'<pre class="code">$1</pre>',
//added paragraph
'<p>$1</p>',
);
// Do simple BBCode's
$str = preg_replace ($simple_search, $simple_replace, $str);
// Do <blockquote> BBCode
$str = bbcode_quote ($str);
return $str;
}
function bbcode_quote ($str) {
//added div and class for quotes
$open = '<blockquote><div class="quote">';
$close = '</div></blockquote>';
// How often is the open tag?
preg_match_all ('/[quote]/i', $str, $matches);
$opentags = count($matches['0']);
// How often is the close tag?
preg_match_all ('/[/quote]/i', $str, $matches);
$closetags = count($matches['0']);
// Check how many tags have been unclosed
// And add the unclosing tag at the end of the message
$unclosed = $opentags - $closetags;
for ($i = 0; $i < $unclosed; $i++) {
$str .= '</div></blockquote>';
}
// Do replacement
$str = str_replace ('[' . 'quote]', $open, $str);
$str = str_replace ('[/' . 'quote]', $close, $str);
return $str;
}
//ตัวอย่างการนำไปใช้งาน
$a="[url=http://www.pyayam.com]http://www.pyayam.com[/url]";
echo bbcode_format($a);
?>
ขึ้นไปด้านบน
