Page 1 of 1

Regular expressions and all things nice

Posted: Sat Apr 23, 2005 1:59 pm
by Red Squirrel
This is the second article looking at how to allow your visitors to post content using bbCode. While the previous article looked at the client-side processing this article will deal with how to treat bbCode formatted text once it reaches your server.

http://www.iceteks.com/articles.php/javascript2/1

Archived topic from Iceteks, old topic ID:3266, old post ID:26505

Regular expressions and all things nice

Posted: Tue Jul 05, 2005 4:03 pm
by Streety
Thanks for taking the time to read the article kryptx. You're absolutely right. I maintain linebreaks in the cascade stylesheet by setting whitespace as pre:

Code: Select all

.code_box {font-weight:normal;
  font-family: Courier;
  white-space:pre;
  background-color:#00FFFF;
  border-style: solid;
  border-width: 1px;
  border-color: #959595;
  text-indent: 0px;
}[code]  

I also apply the nl2br function to the whole post which adds extra line breaks into the code tags.

The best way of dealing with it is probably just deleting whitespace:pre from the stylesheet.  Thanks for picking up on the error! :)

hi tayfun, I can't say I've ever seen that error before.  I thought at first you may have copied the function into your script twice but on testing this I don't get an error.  

You could try using [url=http://www.php.net/function_exists]function_exists[/url] and before declaring the function and see what it comes back with.  Not much else I can suggest I'm afraid. 

[color=#888888][size=85]Archived topic from Iceteks,  old topic ID:3266, old post ID:27946[/size][/color]

Regular expressions and all things nice

Posted: Sat Oct 15, 2005 12:40 pm
by Red Squirrel
Yeah but trying to do anything strictly xhtml compliant is nearly impossible and has no benifits, usually just sticking to W3C html 5.02 (or whatever that number is:P) should almost guarantee cross browser compatability. Unless you want a really crappy site <u> <b> <i> are rather useful. You can always use css but then that increases the file size.

ex: <font style="font-weight:bold">hi</font>

vs

<b>hi</b>

Even with a class it's longer:

<font class="b">hi</font>

Though it would be possible to get bbcode to produce this, but it would only increase the file size of the DB.

Archived topic from Iceteks, old topic ID:3266, old post ID:31341

Regular expressions and all things nice

Posted: Sun Oct 16, 2005 1:29 pm
by Red Squirrel
Yes Xhtml is great if you can be diciplined to actually code that strictly, but in my opinion it's too much, just plain normal W3C is good enough for me. :D

Archived topic from Iceteks, old topic ID:3266, old post ID:31402

Regular expressions and all things nice

Posted: Sun Oct 16, 2005 4:04 pm
by MikeDB
Yes yes I dont nkow why im even answering to this post but... Yes.

Archived topic from Iceteks, old topic ID:3266, old post ID:31404

Regular expressions and all things nice

Posted: Tue Oct 18, 2005 8:30 pm
by Red Squirrel
Hey sorry to the person who just posted and got hit with the spam bot. really not sure why it snapped. Must be the word compliant, thats often in spam.

Feel free to register as the spam bot validation wears off after some posts.

Archived topic from Iceteks, old topic ID:3266, old post ID:31493

Regular expressions and all things nice

Posted: Thu Aug 30, 2007 9:12 pm
by Anonymous
I have got the form with the BBcode working fine now after reading the article properly but I am now stuck on converting teh BBcode into HTML.

First thing...is the file supposed to be called bbcode.php like referred to in the first part of the article?

Second thing....is there a complete listing of the bbcode.php? I have gone through the second part and put the code together but when i try and preview what I have done...it just echoes this
function output_post ($post) { //Make safe any html $post_no_html = htmlspecialchars($post); //Make sure there is no whitespace at the end of the message //It's conceivable that the user will start their message with whitespace $post_abridged = chop($post_no_html); //Callback function for preg_replace_callback below function convert_for_html ($matches) { $regex[0] = "["; $regex[1] = "]"; $replace[0] = "["; $replace[1] = "]"; ksort($regex); ksort($replace); $treated = str_replace($regex, $replace, $matches[1]); $output = 'Code:
' . $treated . '
'; return $output; } //Convert code tags $code_treated = preg_replace_callback( "/

Code: Select all

(.+?)
/s", "convert_for_html", $post_abridged); //Arrays for the bbCode replacements $bbcode_regex = array(0 => '/(.+?)/s', 1 => '/(.+?)/s', 2 => '/(.+?)/s', 3 => '/
(.+?)
/s', 4 => '/
(.+?) wrote:(.+?)
/s', 5 => '/(.+?)/s', 6 => '/(.+?)/s', 7 => '/[img](.+?)[/img]/s', 8 => '/[color=(.+?)](.+?)[/color]/s', 9 => '/[size=(.+?)](.+?)[/size]/s'); $bbcode_replace = array(0 => '$1', 1 => '$1', 2 => '$1', 3 => 'Quote:
$1
', 4 => '$1 said:
$2
', 5 => '$1', 6 => '$2', 7 => '', 8 => '$2', 9 => '$2'); ksort($bbcode_regex); ksort($bbcode_replace); //preg_replace to convert all remaining bbCode tags $post_bbcode_treated = preg_replace($bbcode_regex, $bbcode_replace, $code_treated); //Convert new lines to
$post_with_br = nl2br($post_bbcode_treated); echo $post_with_br; };
How do i get this working?

Archived topic from Iceteks, old topic ID:3266, old post ID:38237

Regular expressions and all things nice

Posted: Sat Sep 01, 2007 7:12 am
by Anonymous
I have worked out why it wouldn't work before by following the article again but I still can't output what is entered in the form. All I get is a blank page

Archived topic from Iceteks, old topic ID:3266, old post ID:38239

Regular expressions and all things nice

Posted: Mon Mar 24, 2008 8:44 pm
by Anonymous
I also had a "blank page" problem, but I've resolved it.
When I saw the function returned an empty string, I checked the code, and after copying outside of the function, I found out that it failed because I had missed the "code" part. I had:

Code: Select all

$post_abridged = chop($post_no_html);
$bbcode_regex = [...]
$post_bbcode_treated = preg_replace($bbcode_regex, $bbcode_replace, $code_treated);[code]
I changed "$code_treated" to "$post_abridged", because I hadn't defined the "$code_treated" variable at missing the "code" part.
So if you find that the script returns a blank page, make sure you haven't missed any step; and if you have, change the variable name.

[Sorry about my bad English: I'm Spanish and I'm not very confident with it]

[color=#888888][size=85]Archived topic from Iceteks,  old topic ID:3266, old post ID:38725[/size][/color]