是这样的表单提交比如:<pre class="brush: java;">111</pre><script>alert('hack');</script><p>new pa</p><br>php服务器端:怎样把其他的尖括号转换成html实体,除了<pre class="brush: java;">111</pre>我使用htmlspecialchars函数,但是连 <pre class="brush: java;">111</pre> 括号也转换了。
调试欢乐多
第一个参数是原文
第二个参数是允许的标签。
比如$html = strip_tags($html, array('<pre>'));
<script>alert('hack');</script>
<p>new pa</p>php接收处理变成:<pre class="brush: java;">111</pre>
<script>alert('hack');</script>
<p>new pa</p>就是不知道如何处理。
$html=<<<HTML
<pre class="brush: java;">111</pre><script>alert('hack');</script><p>new pa</p><br>
HTML;
if(preg_match_all('#</?pre[^>]*>#',$html,$matchs)){
foreach($matchs[0] as $pre){
$html = str_replace($pre,'{$pre'.md5($pre).'}',$html);
}
$html = htmlspecialchars($html);
foreach($matchs[0] as $pre){
$html = str_replace('{$pre'.md5($pre).'}',$pre,$html);
}
}else{
$html = htmlspecialchars($html);
}
echo $html;
<script>alert("hack");</script>
<p>new pa</p>
<br>';echo str_replace(array('<script>', '</script>'), array('<script>', '</script>'), $str);
$html=<<<HTML
<pre class="brush: java;">111</pre><script>alert('hack');</script><br />
<script language="javascript">alert('hack');</script>
<a href="aaa.php" onclick="alert('aaa');">aaa</a>
<a href="bbb.php" onmouseover="alert('bbb');">bbb</a>
<p>new pa</p><br>
HTML;
$html = preg_replace(array('#<(/?script[^>]*)>#','#on\w+="[^"]+"#'),array("<\\1>",''),$html);
echo $html;
exit;
http://www.android-study.com/