准备好的声明在“之前”

时间:2010-11-10 01:20:26

标签: php prepared-statement

我使用准备好的语句来解扰BBcode,但出于某种原因,它在发布之前放了\。我不知道是什么导致它,但我确定它发生在我将BBcode更改为html以放入数据库时​​,代码看起来像这样:

$text = $membership->remove_HTML($text);


    //convert line breaks to <br /> tags.
      $text = nl2br($text);

      //cleans up by removing white space.
      $text = trim($text);

      //now lets replace things BASIC EDITOR
      $text = preg_replace("/\[b\](.*)\[\/b\]/", "<strong>\\1</strong>", $text);
      $text = preg_replace("/\[i\](.*)\[\/i\]/", "<em>\\1</em>", $text);
      $text = preg_replace("/\[u\](.*)\[\/u\]/", "<span style='text-decoration:underline;'>\\1</span>", $text);
      $text = preg_replace("/\[s\](.*)\[\/s\]/", "<del>\\1</del>", $text);

      $text = preg_replace("/\[url\](.*)\[\/url\]/", "<a target='_blank' href='\\1'>\\1</a>", $text);
      $text = preg_replace("/\[url=(.*)\](.*)\[\/url\]/", "<a target='_blank' rel='\\1' href='\\1'>\\2</a>", $text);

      //now lets replace MORE things EXPANDED EDITOR
      $text = preg_replace("/\[img\](.*)\[\/img\]/", "<img>\\1</img>", $text);
      $text = str_ireplace("[hr]","<hr>", $text);
      $text = preg_replace("/\[justify\](.*)\[\/justify\]/", "<p style='text-align:justify;'>\\1</p>", $text);
      $text = preg_replace("/\[center\](.*)\[\/center\]/", "<p style='text-align:center;'>\\1</p>", $text);
      $text = preg_replace("/\[left\](.*)\[\/left\]/", "<p style='text-align:left;'>\\1</p>", $text);
      $text = preg_replace("/\[right\](.*)\[\/right\]/", "<p style='text-align:right;'>\\1</p>", $text);
      $text = preg_replace("/\[h1\](.*)\[\/h1\]/", "<h4>\\1</h4>", $text);
      $text = preg_replace("/\[h2\](.*)\[\/h2\]/", "<h5>\\1</h5>", $text);
      $text = preg_replace("/\[h3\](.*)\[\/h3\]/", "<h6>\\1</h6>", $text);

      $updatenews = $mysql->add_news($_SESSION['user'][0], $headline, $text, $time);

1 个答案:

答案 0 :(得分:0)

最快的检查方法是确保PHP的魔术引号为disabled

如果您不想直接使用PHP配置,请在将$text推进到preg_replaces()系列之前检查斜杠是否存在。