need help with getting my code to work right for bbcode

for some reason i cant get my quote code to work...

all my other bbcode in the file below works like bold and italic but i cant seem to get my quote to work stated here = "/\[quote=(.*)\](.*)\[\/quote\]/is" => "<div style=\"background: #e4ebeb; border: 1px solid #555555; padding: 6px;\">
<div style=\"font-size:10px; color:#043050;\">Quote by * :</div>
<div>~</div></div>
"

i dont understand it as i have had it working... in the next post below i have stated my code where the code is written into the text box
<?php
 
class BBCode {
     protected $bbcodes; // Store array of BBCodes
     protected $vbbcodes; // Store array of Variable BBCodes
     var $debug = ''; // Store any errors
     var $selection = ''; // Store the selection to be parsed first
     var $parsed = ''; // Store the parsed selection.
     var $path2emoticon = 'http://www.runningprofiles.com/emoticons/'; // Set the path to the emoticon images.
     var $imgext = '.gif'; // Set this to the ext of the images
     public $emoticons = 
          array( '::)' => 'Roll Eyes', ':)' => 'Smiley', ';)' => 'Wink', ':D' => 'Cheesy', ';D' => 'Grin', '>:(' => 'Angry',
          ':(' => 'Sad', ':o' => 'Shocked', '8)' => 'Cool', '???' => 'Huh', ':P' => 'Tongue', ':-[' => 'Embarrassed', 
          ':-X' => 'Lips Sealed', ':-\\' => 'Undecided', ':-*' => 'Kiss', ':*(' => 'Cry' ); 
          // All emoticons. Spaces and caps will be removed for image names.
     
     function parseCode($security=0) { // Security defaults to 0. Set to 1 for non-variable bbcodes only.
          if(!$this->selection) { // Check if the user has set the selection.
               $this->debug .= "You must set a value for the selection before parsing! "; // Set the Debug variable if not.
          }else{
               if($this->parsed) { // Check if text has already been parsed.
                    $this->debug .= "You must run the code parser before the emoticon parser! "; // Set the Debug variable if so.
               }else{
                    $selection = str_replace("\n", '', $this->selection); // Set selection variable for inside function only.
                    $selection2 = htmlentities(str_replace("\n", '', $this->selection)); // Remove html entities for security.
                    $this->selectCodes($security); // Select codes depending on security.
                    #### Start [code] Section ###
                    preg_match_all("/\[code\].+\[\/code\]/Ui", $selection2, $matches); // Check for [code] tags. Set the matches array.
                    $i = 0; // Set the variable to the default of 0.
                    while(isset($matches[0][$i])) { // Check for match from preg_match.
                         $selection = str_ireplace(html_entity_decode($matches[0][$i]), "[code$i]", $selection); // Decode and replace for strip tags.
                         $i++; // Add one to the variable to loop.
                    }
                    $selection = strip_tags($selection); // Strip tags from the selection.
                    while($i>0) { // Reloop through matches.
                         $i--; // Remove one from the variable to loop.
                         $m = html_entity_decode($matches[0][$i]); // Decode the match for accurate removal.
                         $m = str_ireplace("[code]", "", $m); // Remove [code] tag.
                         $m = str_ireplace("[/code]", "", $m); // Remove [/code] tag.
                         $m = highlight_string($m,true); // Highlight string and encode.
                         $selection = str_ireplace("[code$i]", "[code]" . $m . "[/code]", $selection); // Add highlighted code back with tags for later parsing.
                    }
                    #### End [code] Section ####
                    ### Start BBCode Section ###
                    foreach ($this->bbcodes as $key => $value) { // Loop through bbcodes.
                         $selection = str_ireplace($key, $value, $selection); // Replace the $key value(bbcode) with the $value value(html code).
                    }
                    #### End BBCode Section ###
                    ### Start Var. BBCode Sec. ##
                    if($security==0) { // Only loop through if security allows it.
                         foreach ($this->vbbcodes as $key => $value) { // Loop through variable bbcodes.
                              unset($matches); // Unset matches set in earlier code.
                              $i = 0; // Set the variable to the default of 0.
                              preg_match_all($key, $selection, $matches); // Find all instances of the variable bbcode set them to matches.
                              // Preg Matching also stores the "variables" inside the matches var. with the matches.
                              while(isset($matches[0][$i])) { // Check if there are any instances.
                                   $v = str_replace("*", $matches[1][$i], $value); // Replace the asterisk with the variable value.
                                   if(isset($matches[2][$i])) { // Check for more than one variable.
                                        $v = str_replace("~", $matches[2][$i], $v); // Replace the ~ with the second variable value.
                                   }
                                   $selection = str_replace($matches[0][$i], $v, $selection); // Replace the match with the accumulated variable.
                                   $i++; // Add one to the variable to loop.
                              }
                         }
                    }
                    ### End Var. BBCode Sec. ##
                    $this->parsed = $selection; // Insert the accumulated parsed selection into the parsed variable as to keep selection original.
                    unset($selection); // Remove all value from private variable selection.
               }
          }
     }
     
      protected function selectCodes($security=0) { // Security defaults to 0. Set to 1 for non-variable bbcodes only.
      switch ($security) { // Switch between 0 and 1.
         default: // In the case of security being anything but one. Defaulting to zero.
         case 0: // In the case of security being zero.
            $this->bbcodes =
               array( "[i]" => "<i>", "[/i]" => "</i>",  "[b]" => "<b>", "[/b]" => "</b>", "[u]" => "<u>", "[/u]" => "</u>", "[s]" => "<del>", "[/s]" => "</del>", "[move]" => "<marquee>", "[/move]" => "</marquee>",
               "[center]" => "<center>", "[/center]" => "</center>", "[hr]" => "<hr />", "[table][tr][td]" => "<table>", "" => "</table>", "[table][tr][td]" => "<tr>", "[/td][/tr][/table]" => "</tr>", "[table][tr][td]" => "<td>",
               "[/td][/tr][/table]" => "</td>", "[sub]" => "<sub>", "[/sub]" => "</sub>", "[sup]" => "<sup>", "[/sup]" => "</sup>", "[tt]" => "<tt>", "[/tt]" => "</tt>", "[list]" => "<ul>", "[/list]" => "</ul>", "[list][li]" => "<li>",
               "[/li][/list]" => "</li>", "[/size]" => "</font>", "[/face]" => "</font>", "[/color]" => "</font>", "[p]" => "<p>", "[/p]" => "</p>",
               "[/td][/tr][/table][code]" => "<p style=\"background: #BBBBBB; border: 1px solid #555555; padding: 6px;\"><span style=\"font: bold 10px Courier New;\">&nbsp;&nbsp;&nbsp;CODE :</span><br/>",);
            // BBCode array including their replacement.
            $this->vbbcodes = 
               array( "/\[size=(.+)\]/Ui" => "<font size=\"*\">", "/\[face=(.+)\]/U" => "<font face=\"*\">", "/\[color=(.+)\]/Ui" => "<font color=\"*\">", "/\[img\](.+)\[\/img\]/Ui" => "<img src=\"*\" />",
               "/\[email\](.+)\[\/email\]/Ui" => "<a href=\"mailto:*\">*</a>", "/\[url\](.+)\[\/url\]/Ui" => "<a href=http://\*\>*</a>", "/\[email=(.+)\](.+)\[\/email\]/Ui" => "<a href=\"mailto:*\">~</a>",
               "/\[url=(.+)\](.+)\[\/url\]/Ui" => "<a href=\"*\">~</a>", "/\[quote](.+)\[\/quote\]/is" => "<div class=\"quote_header\">Quote:</div><div class=\"quote_body\">*</div>", "/\[quote=(.*)\](.*)\[\/quote\]/is" => "<div style=\"background: #e4ebeb; border: 1px solid #555555; padding: 6px;\">
<div style=\"font-size:10px; color:#043050;\">Quote by * :</div>
<div>~</div></div>
" );  
            // Variable BBCode array including their replacement and variable position(s).
            break;
         case 1: // In the case of security being one.
            $this->bbcodes =
               array( "[i]" => "<i>", "[/i]" => "</i>", "[b]" => "<b>", "[/b]" => "</b>", "[u]" => "<u>", "[/u]" => "</u>", "[s]" => "<del>", "[/s]" => "</del>", "[move]" => "<marquee>", "[/move]" => "</marquee>",
               "[center]" => "<center>", "[/center]" => "</center>", "[hr]" => "<hr />", "[table][tr][td]" => "<table>", "" => "</table>", "[table][tr][td]" => "<tr>", "[/td][/tr][/table]" => "</tr>", "[table][tr][td]" => "<td>",
               "[/td][/tr][/table]" => "</td>", "[sub]" => "<sub>", "[/sub]" => "</sub>", "[sup]" => "<sup>", "[/sup]" => "</sup>", "[tt]" => "<tt>", "[/tt]" => "</tt>", "[list]" => "<ul>", "[/list]" => "</ul>", "[list][li]" => "<li>",
               "[/li][/list]" => "</li>", "[/td][/tr][/table][code]" => "<p style=\"background: #BBBBBB; border: 1px solid #555555; padding: 6px;\"><span style=\"font: bold 10px Courier New;\">&nbsp;&nbsp;&nbsp;CODE :</span><br/>",
               "[/c.ode]" => "</p>" ,"[c.ode]" => "<p style=\"background: #BBBBBB; border: 1px solid #555555; padding: 6px;\"><span style=\"font: bold 10px Courier New;\">&nbsp;&nbsp;&nbsp;CODE :</span><br/>", "[/c.ode]" => "</p>");
            // BBCode array including their replacement.
            break; 
          }
     }
     function parseEmoticons($noBBCode=0) { // noBBCode variable defaults to 0. If set to one the parser will not parse be able to parse BBCode.
          if(!$this->selection) { // Check if the user has set the selection.
               $this->debug .= "You must set a value for the selection before parsing! "; // Set the Debug variable if not.
          }else{
               $error = 0; // Default to no errors.
               if($this->parsed) { // If something has already been parsed.
                    $selection = str_replace("\n", '', $this->parsed); // Set the parsed value in order to not reset the already parsed selection.
               }elseif($noBBCode==1) { // If nothing has been parsed and the noBBCode variable has been set to one.
                    $selection = str_replace("\n", '', $this->selection); // Set the selection value to variable selection.
                    $error = 2; // Set the error variable to 2 so that it will not look for [code] tags.
               }else{ // If all else fails.
                    $this->debug .= "You must parse BBCode first or set the noBBCode variable to 1(setting this variable will not allow bbcode to be parsed)! "; // Set the Debug variable if it gets here.
                    $error = 1; // Set the error variable so the parser doesn't run.
               }
               if($error==0 or $error==2) {
                    if($error==0) { // Only search if there has been parsing.
                         unset($matches);
                         preg_match_all('/\<p style="background: #BBBBBB; border: 1px solid #555555; padding: 6px;"\>.+\<\/p\>/Uim', $selection, $matches); // Finds all code selections.
                         $i = 0; // Set the variable to the default of 0.
                         while(isset($matches[0][$i])) { // Check for match from preg_match.
                              $selection = str_ireplace($matches[0][$i], "[code$i]", $selection); // Replace for non-emoticon section.
                              $i++; // Add one to the variable to loop.
                         }
                    }
                    foreach($this->emoticons as $key => $value) { // For each emoticon set the key and value.
                         $v = str_replace(" ", "", $value); // Remove all spaces from value but not replacing the value variable.
                         $v = "<img src=\"" . $this->path2emoticon . strtolower($v) . $this->imgext . "\" alt=\"$value\" />"; // Set the image replacement up.
                         $selection = str_ireplace($key, $v, $selection); // Replace the key with the set up image replacement.
                    }
                    if($error==0) { // Only search if there has been parsing.
                         while($i>0) { // Reloop through matches.
                              $i--; // Remove one from the variable to loop.
                              $selection = str_ireplace("[code$i]", $matches[0][$i], $selection); // Add the codes back for final display.
                         }
                    }
                    $this->parsed = $selection; // Insert the accumulated parsed selection into the parsed variable as to keep selection original.
                    unset($selection); // Remove all value from private variable selection.
               }
          }
     }
}
?>

Open in new window

runnerjpAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

runnerjpAuthor Commented:
like i said here is my code that i use to post the code in my forum... the only thing i have really chnaged is adding escape strings mysql_real_escape_string($_POST['yourpost']);..

now i type into my textbox this  [quote=me]this is a test[/quote] and it outputs this rather then the bbcode chnage ??
<link rel="stylesheet" type="text/css" href="http://www.runningprofiles.com/css/login.css">
<link rel="stylesheet" type="text/css" href="http://www.runningprofiles.com/members/include/style.css">
<script language="JavaScript" src="bbcodebuttons.js"></script>
<?php
 
require_once '../settings.php';
checkLogin('1 2');
 
include "../info.php"; // sets username/id ect
include "../getuser.php"; // records user view on page
include "checkinfo.php"; //Your ip address is...;
include "forumnav.php"; // shows where you are on the forum
 
 
if (isset($_POST['preview'])) //preview post!
 
{
 
				$thePost = $_POST['yourpost'];
				$theSubject = $_POST['subject'];
				if ($thePost == "" || $thePost == null)
				{
								$errMsgPost = "Error: You did not type in a post."; //no post entered
				} elseif ($theSubject == "" || $theSubject == null)
				{
								$errMsgSubject = "Error: You did not enter a subject."; //no subject entered
				}
				else
				{
								$message = $_POST['yourpost'];
 
								$message = BBCode($message); ?><center> <p>your post will say.. </p> </center>
                               
   
    <table width="90%" class="loggedin">
  <tr>
    <td><?php echo $message; ?></td>
  </tr>
</table>
<br />
 
 <?php
				}
} elseif (isset($_POST['submit']))
{
				$thePost =  mysql_real_escape_string($_POST['yourpost']);
				$theSubject =  mysql_real_escape_string($_POST['subject']);
				if ($thePost == "" || $thePost == null)
				{
								$errMsgPost = "Error: You did not enter any text."; //no post entered
				} elseif ($theSubject == "" || $theSubject == null)
				{
								$errMsgSubject = "Error: New threads require a subject."; //no subject entered
				}
				else
				{
								if (isset($_POST['email']))
								{
										
												$insertpost = "INSERT INTO forumtutorial_posts(forum,author,title,post,showtime,realtime,lastrepliedto,lastposter) values('$forum','$username','$theSubject','$thePost','$thedate','$thedate','$thedate','$username')";
												mysql_query($insertpost) or die("Could not insert post"); //insert post
												$insertemail = "INSERT INTO forum_email(user_id,topic_id,mailed) values('$id','$forumpostid','1')";
												mysql_query($insertemail) or die("Could not insert email"); //insert  email
												$updatepost = "UPDATE `users` SET `post_count`=`post_count`+'1' WHERE `Username`='$username'";
												mysql_query($updatepost) or die("Could not update post");
												header("Location: http://www.runningprofiles.com/members/index.php?page=forum&forum=$forum");
												exit;
 
								}
								else
								{
 
												//we now strip HTML injections
																				$insertpost = "INSERT INTO forumtutorial_posts(forum,author,title,post,showtime,realtime,lastrepliedto,lastposter) values('$forum','$username','$theSubject','$thePost','$thedate','$thedate','$thedate','$username')";
												mysql_query($insertpost) or die("Could not insert post"); //insert post
												$updatepost = "UPDATE `users` SET `post_count`=`post_count`+'1' WHERE `Username`='$username'";
												mysql_query($updatepost) or die("Could not update post");
												header("Location: http://www.runningprofiles.com/members/index.php?page=forum&forum=$forum");
												exit;
								}
				}
}
?>	
        	
<form action= 'http://www.runningprofiles.com/members/index.php?page=post&forum=<? echo
$forum ?>'  method='post' name='myform'>
	
		  <table class='maintables'>
			<tr class='headline'><td>Post a message</td></tr>
			<tr class='maintables'>
				<td>					
					<div align="center">
						<p><span style="color:red;"><?php echo $errMsgSubject; ?></span> <span style="color:red;"><?php echo
$errMsgPost; ?></span></p>
						<p><strong>Please enter you message title here.</strong><br>
						    <input class='inputinbox' type='text' name='subject' size='20' value="<?php echo
$theSubject;
 ?>">
				          <br>
					          </p>
				  </div>				</td>
			</tr>
			<tr class='maintables'>
				<td align="center">
						
							  <?php include 'bbcodebuttons.php'; ?>
					            
							            <textarea id="inputforum" class="inputforum" name='yourpost' rows='5' cols='40'><?php echo 
$thePost;
 ?></textarea>
				             
							<p> Notify me of replies.
							  <label>
							  <input type="checkbox" name="email" />
							  </label>
				  </p>
							<p><br>
					            <input type='submit'class="submit-btn" name='submit' value=''>	
					          <input type='submit' class="preview-btn"  name='preview' value=''>				
				                        </p></td>
			</tr>
		</td>
			</tr>
		</table>
         
</form>
    

Open in new window

0
Ray PaseurCommented:
Can you clarify this a bit: "now i type into my textbox this  [quote=me]this is a test[/quote] and it outputs this rather then the bbcode chnage ??"

Could you post a link to the script that is not working right and tell us how to see the test case?  Or could you isolate the issue a little bit.  You have posted hundreds of lines of code up there, and we could get you an answer faster if you could help us find a succinct test case.

Thanks, ~Ray
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.