PHP当我有preg时如何做htmlspecialchars()

如果我在PHP中创建论坛,留言板,评论部分等,并且某人输入喜欢的文本,而不是以红色显示,则它显示为原始文本。 我尝试过使用htmlentites()和htmlspecialchars(),但事情是我正在做一个preg_replace()来将bbcode标记替换为html标记,就像论坛系统一样。 如果在替换之前使用htmlspecialchars(),则不起作用。 但是,如果在替换后使用htmlspecialchars(),则会显示我作为原始文本转换的html标记。

<html>
<head>
<title>BBCODE TEST</title>
<link rel=stylesheet href="bbcode.css" />
<script type="text/javascript" src="bbcode.js"></script>
</head>
<body>
<?php
$form = "<form method='post' action=''>
<input type='textbox' class='textbox' name='textbox' onKeyPress='return check(event)'/>
<input type='submit' class='submit' name='submit' value='Submit' />
</form>";

if (isset($_POST['submit']) && isset($_POST['textbox'])){

$text = $_POST['textbox'];
$text = bbcode($text);

echo $text;
echo $form;
} else {
echo $form;
}

function bbcode($text){

$text = $_POST['textbox'];

$patterns = array(
"/[url=(.+)](.*)[/url]/is" => "<a href='1'>2</a>",
"/[img](.+)[/img]/is" => "<img src='1' />",
"/[b](.+)[/b]/is" => "<b>1</b>",
"/[i](.+)[/i]/is" => "<i>1</i>",
"/[u](.+)[/u]/is" => "<u>1</u>",
"/[color=(.+)](.*)[/color]/is" => "<font color='1'>2</font>"
);

foreach($patterns as $pattern => $replace){
$text = preg_replace($pattern, $replace, $text);
}

return $text;

}


?>
</body>
</html>
链接地址: http://www.djcxy.com/p/29877.html

上一篇: PHP How to do htmlspecialchars() when i have preg

下一篇: replace all line breaks between specific BBCode tags