Jump to content

Help to create a forum - BBCodes


gaza165

Recommended Posts

Hi all i am using BBCodes on my website to filter out html entities in my blog

 

http://www.thedesignmonkeys.co.uk/

 

Just like PHP Freaks does I want to be able to submit PHP Code to my blog. I want to know the class I need to construct for me to be able to have php code parsed from my blog and to have it coloured like PHP Freaks does using the [ code ] tags.

 

Not sure if this is easy or hard but any guidance would be very useful.

 

Thanks

 

Garry

 

 

 

Link to comment
Share on other sites

  • Replies 61
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

<?php
//select the blog based on the id
	$result = mysql_query("SELECT * FROM blog WHERE title = '$title'") or die(mysql_error());
	if(mysql_num_rows($result) == 0)
	{
		echo "<h1>The post you are looking for cannot be found--> <a href='./blog'>Back to Blog</a></h1>";//post not 		
		exit;
		}	

	while($row = mysql_fetch_array($result))
		{


		$body = str_replace("","'",$body);
		$body = str_replace('','"',$body);
		$body = str_replace('','"',$body);
		$body = str_replace("\'","'",$body);	
		$body = htmlentities($row['body']); 
		$_SESSION['blog_id'] = $row['id'];

			include_once "init.inc.php";
			require_once 'HTML/BBCodeParser.php';
			$options = @parse_ini_file('BBCodeParser.ini');
			$parser = new HTML_BBCodeParser($options);			

		$blog_id = $row['id'];

			echo "<div id='fullblog'>";
			echo "<h1>".$row['title']."</h1>";
			echo "<p class='date'>Posted by ".ucfirst($row['name'])." | ".date("F j, Y",strtotime($row['blog_created']))."</p>";

			$blog_title =  $row['title'];
			$_SESSION['title'] = $blog_title;

			// Pattern and pregmatches etc \\

			$pattern = "%http://\S+\.(?:jpe?g|png|gif)%i";
			$match = preg_match_all($pattern, $body, $matches,1);
			$gaz = $body;	
			$i = 0;	
				foreach($matches[0] as $url) {	
					$replacement = "%TOKEN".$i."%";	
					$gaz = preg_replace("@$url@", $replacement, $gaz, 1);
					$i++;
				}						

			$mpgpattern = "%http://\S+\.(?:mpg)%i";
			$mpgmatch = preg_match_all($mpgpattern, $body, $mpgmatches,1);	
			$m = 0;	
				foreach($mpgmatches[0] as $mpgurl) {	
					$replacement = "%MPG".$m."%";	
					$gaz = preg_replace("@$mpgurl@", $replacement, $gaz, 1);
					$m++;
				}

			$vidpattern = "%http://(?:\S+\.swf\b|\S+?youtube\S+)%";
			$vidmatch = preg_match_all($vidpattern, $gaz, $vidmatches);
			$g = 0;	
				foreach($vidmatches[0] as $vidurl) {

					$replace =  '%YOUTUBE'.$g.'%';
					$gaz = preg_replace($vidpattern,$replace, $gaz, 1);
					$g++;
				}


			$string = nl2br($gaz);
			$i= 0;

				foreach($matches[0] as $value) {
					$replace = "<img width='500px' height='300px' src='".$value."'></img>";
					$search = "%TOKEN".$i."%";
				    $string = str_replace($search, $replace, $string);
					$i++;
				}

			$e= 0;
				foreach($vidmatches[0] as $vidurl) {	

				$vidurl = substr($vidurl, 31);

					$search = "%YOUTUBE".$e."%";
					$replace = '<embed src="http://www.youtube.com/v/'.$vidurl.'" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" />';
					$string = str_replace($search, $replace, $string);
					$e++;
				}

			$k= 0;
				foreach($mpgmatches[0] as $mpgurl) {				
					$search = "%MPG".$k."%";
					$replace = '<embed src="'.$mpgurl.'" type="movie/mpg" autoStart="true" width="425" height="350" /></embed>';
					$string = str_replace($search, $replace, $string);
					$e++;
				}

			function bbcode($code)
			{
			$code = preg_replace("/\[code\](.*?)\[\/code\]/","\\1",$code);
			$code = highlight_string($code);
			return $code;
			}

			echo "<p class='ajaxblog'>".bbcode($parser->qParse($string))."<p><br/>";



		}
?>

 

the code above shows how i output my blog onto the page. i use a whole set of preg_matches to search for things such as youtube videos, hyperlinks and images to display on the page.

 

My questions is..... how can i get select everything inide [ code ] [ /code ] and highlight it.#

 

Can someone look at my code and tell me where i am going wrong.

 

many thanks

 

Garry

Link to comment
Share on other sites

Blade i did try and use your function but i must of implemented it wrong

 

i have created a simpler version of the output..

 

Can you tell me if this is correct??

 

<?php
while($row = mysql_fetch_array($result))
		{


		$body = htmlentities($row['body']); 
		$_SESSION['blog_id'] = $row['id'];
		$blog_id = $row['id'];

			include_once "init.inc.php";
			require_once 'HTML/BBCodeParser.php';
			$options = @parse_ini_file('BBCodeParser.ini');
			$parser = new HTML_BBCodeParser($options);			

			echo "<div id='fullblog'>";
			echo "<h1>".$row['title']."</h1>";
			echo "<p class='date'>Posted by ".ucfirst($row['name'])." | ".date("F j, Y",strtotime($row['blog_created']))."</p>";

			$blog_title =  $row['title'];
			$_SESSION['title'] = $blog_title;

			function bbcode($code)
				{
				$code = preg_replace("/\[code\](.*?)\[\/code\]/","\\1",$code);
				return $code;
				}
			$body = bbcode($body);



			echo "<p class='ajaxblog'>".highlight_string($body)."<p><br/>";



		}
?>

Link to comment
Share on other sites

You can get an idea of what is going on if you go to view source and find one of the divs that contain posted code. They use spans to change the colors. Now the process they use to do so is any ones guess and I'd say it is very complex.

A good start I think though would first get the text within " " or ' ' red and then out of all the other functions some how so that the word 'do' in a sting like 'I think i will do that' doesn't get turned green. lol

I'm not much help on the code thing because I still look at "regular statements" with blank stares half the time.

Good luck

Link to comment
Share on other sites

to highl;ight the test the parser would be insufficient, you would need to have a function instead thgat out puts the text not a parser wich would re format the text, your new function would be called out(), what it would do is take the message output everything until it gets to a

 take everything from there to 

then output that as highlight_string(the bit) and then the rest of the message would be outputed normaly.

 

substring ereg etc to get the bits of string etc

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.