[Release]Cype Advanced BBCode Parser And Custom BBCode

Joined
Apr 7, 2009
Messages
647
Reaction score
26
FAQ:
What does this do?
This uses preg_replace instead of str_replace, giving the parser case-insensitivity, and more powerful replaces, with exact traces, unlike str_replace.
It also allows custom bbcode throught the DB.
==================================================
This is just the SQL Database Part and Cype BBCode Parser Remake- no website UI.

Go to MySQL, and make a new table called cype_bbcode.

In it, put the following table structure

===========================
id--INTEGER--Auto Increment
pattern--TEXT
replacement--TEXT
===========================

Now, go to sources>parser>bbcode.php

replace the entire file with:
PHP:
<?php 
/*
    Copyright (C) 2009  Murad <Murawd>
						Josh L. <Josho192837>

BBCode Parser Modified By silv3rbullet

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

$c = preg_replace('|\[b\](.+?)\[\/b\]|i', '<b>$1</b>', $c);
$c = preg_replace('|\[i\](.+?)\[\/i\]|i', '<i>$1</i>', $c);
$c = preg_replace('|\[u\](.+?)\[\/u\]|i', '<u>$1</u>', $c);
$c = preg_replace('|\[*\](.+?)\[\/*\]|i', '<li>$1</li>', $c);
$c = preg_replace('|\[url="(.+?)"\](.+?)\[\/url\]|i', '<a href="$1" target="_blank">$2</a>', $c);
$c = preg_replace('|\[center\](.+?)\[\/center\]|i', '<center>$1</center>', $c);
/*
$c = str_replace(array("[right]", "[/right]"), array("<span align=\"right\">", "</span>"), $c);
$c = str_replace(array("[left]", "[/left]"), array("<span align=\"left\">", "</span>"), $c);
*/
$c = preg_replace('|\[img\](.+?)\[\/img\]|i', '<img src="$1" border="0" alt="">', $c);
$c = preg_replace('|\(.+?)\[\/font\]|i', '<font face="$1">$2</font>', $c);
$c = str_replace(":)", "<img src=\"sources/parser/smileys/smile.gif\"/>" , $c);
$c = str_replace("=)", "<img src=\"sources/parser/smileys/smile.gif\"/>" , $c);
$c = str_replace("=P", "<img src=\"sources/parser/smileys/tounge.gif\"/>" , $c);
$c = str_replace(":P", "<img src=\"sources/parser/smileys/tounge.gif\"/>" , $c);
$c = str_replace(":lol:", "<img src=\"sources/parser/smileys/lol.gif\"/>", $c);
$c = str_replace(":haha:", "<img src=\"sources/parser/smileys/lol.gif\"/>", $c);
$c = str_replace(":laugh:", "<img src=\"sources/parser/smileys/lol.gif\"/>", $c);
$c = str_replace(">=(", "<img src=\"sources/parser/smileys/mad.gif\"/>", $c);
$c = str_replace(":mad:", "<img src=\"sources/parser/smileys/mad.gif\"/>", $c);
$c = str_replace(">:(", "<img src=\"sources/parser/smileys/mad.gif\"/>", $c);
$c = str_replace(":O", "<img src=\"sources/parser/smileys/ohmy.gif\"/>", $c);
$c = str_replace("=O", "<img src=\"sources/parser/smileys/ohmy.gif\"/>", $c);
$c = str_replace(":(", "<img src=\"sources/parser/smileys/sad.gif\"/>", $c);
$c = str_replace("=(", "<img src=\"sources/parser/smileys/sad.gif\"/>", $c);
$c = str_replace(";)", "<img src=\"sources/parser/smileys/wink.gif\"/>", $c);
$c = str_replace(";D", "<img src=\"sources/parser/smileys/wink.gif\"/>", $c);
$c = str_replace(";P", "<img src=\"sources/parser/smileys/wink.gif\"/>", $c);
$c = str_replace("=/", "<img src=\"sources/parser/smileys/bored.gif\"/>", $c);
$c = str_replace(":bored:", "<img src=\"sources/parser/smileys/bored.gif\"/>", $c);
$c = str_replace(":D", "<img src=\"sources/parser/smileys/happy.gif\"/>", $c);
$c = str_replace("=D", "<img src=\"sources/parser/smileys/happy.gif\"/>", $c);

$script = "SELECT * FROM `cype_bbcode`";
$query = mysql_query($script) or die(mysql_error());

while($fetch = mysql_fetch_array($query))
{
$c = preg_replace(''.$fetch['pattern'].'|i', $fetch['replacement'], $c);
}
?>

BBCode Pack 1: http://forum.ragezone.com/f427/release-cype-bbcode-pack-605089/?highlight=bbcode+pack
 
Last edited:
lol i just noticed the mysql code at the end...

people will need knowledge on how the code works and other ways to make the bbcode work. just because i put in [quote ][/quote] its not automatically make it work. theres a format that people will need to understand to make it work fully.

i just barely figured out how to make spoilers work fully in bbcode. if you want a taste here:
PHP:
$text = preg_replace("/\[spoiler\](.+?)\[\/spoiler\]/is","".$this->spoiler("\\1")."", $text);
im not going to release the other part but you can get the general idea.

ps to you copy-pasters, dont bother adding this unless you have at least a way to convert it to make it work. i say this because theres more that goes into code.

EDIT:
forgot to mention that i can also change the name of the spoiler button name to give it abit of a "classy" feeling or have it use both classy and non classy spoiler. (not saying that i can only do it because i know people that can do way more then i can)
 
Last edited:
is it more advanced because you used preg_replace instead of str_replace?

Why, yes!
:)
preg_replace better fits str_replace or str_ireplace because it's faster, it's REGEX, it's perl, and you can pin point text, unlike with str_replace

Example:

str_replace(array("[bob=", "]), array("hi", "bob"));
str_replace(array("[joe=", "]), array("lol", "joe"));

Now, even if you use [joe="hi"], it will output lol hi bob, cuz "bob" replaces any instances of "]".

:sleep:

Also, custom bbcode is added.
 
this seems to be your custom code
PHP:
$script = "SELECT * FROM `cype_bbcode`";
$query = mysql_query($script) or die(mysql_error());

while($fetch = mysql_fetch_array($query))
{
$c = preg_replace(''.$fetch['pattern'].'|i', $fetch['replacement'], $c);
}
?>
i rather have it in a file then in a db. since your going for speed anyways, people will tell you that retrieving from a db is slower then pulling data from a file.

why make it more complex then it is already?
 
Many people would rather put bbcode in a database, rather than in a file.

It's less complicated, and easier to use.
However, it DOES take longer, and cost more memory.

But you could just use a mysql_free_result()
 
you have a script that will add the bbcode into the db or does the user have to insert it them selfs?

plz do a thread search of my username and look for my discussion thread then ask. this is basically the same as my thread which i was referring to in my earlier post
 
you have a script that will add the bbcode into the db or does the user have to insert it them selfs?

plz do a thread search of my username and look for my discussion thread then ask. this is basically the same as my thread which i was referring to in my earlier post

By that you mean the CSS and MySQL thread?
Again, you can use mysql_free_result().

I just have a bad habit of not using it.

Example:
PHP:
#Query#
$script = "SELECT * FROM `table`";
#Execute#
$execute = mysql_query($script) or die(mysql_error());
#Fetch Array#
$array = mysql_fetch_array($execute);

#Free MySQL Memory#
mysql_free_result($execute);

echo $array['message'];

By using mysql_free_result($query), you immediately free the memory.
you have a script that will add the bbcode into the db or does the user have to insert it them selfs?
==================================================
This is just the SQL Database Part and Cype BBCode Parser Remake- no website UI.

It would be easy though, make a form, and query some stuff

Example
PHP:
$pattern = mysql_real_escape_string(stripslashes($_POST['pattern']));
$replace = mysql_real_escape_string(stripslashes($_POST['replace']));

$query = mysql_query("INSERT INTO `cype_bbcode` (`pattern`, `replacement`) VALUES ('".$patter."', '".$replace."'") or die("An error occurred: ".mysql_error());

echo "Succesfully added bbcode!";
 
Last edited:
ok now i see how you set it up.

this would be considered as anti copy-paste and using the noggin that has formed rust.

edit:
quick take out the ex. keep the thread the way it was. i like what you did, just didnt realize it until after a small conversation on this thread LOL
 
Last edited:
i did research and it said:

mysql_free_result() only needs to be called if you are concerned about how much memory is being used for queries that return large result sets. All associated result memory is automatically freed at the end of the script's execution.
 
Back