Gar*_*rry 14 php htmlspecialchars
以下是我所拥有的代码行:
$content = htmlspecialchars($_POST['content'], ENT_QUOTES);
Run Code Online (Sandbox Code Playgroud)
但我想要做的是只允许某些类型的HTML代码通过而不进行转换.以下是我希望传递的HTML代码列表:
<pre> </pre>
<b> </b>
<em> </em>
<u> </u>
<ul> </ul>
<li> </li>
<ol> </ol>
Run Code Online (Sandbox Code Playgroud)
随着我的发展,我希望以后能够在我想到的时候添加更多HTML.有人可以帮我修改上面的代码,以便上面的HTML代码的指定列表可以通过而不进行转换吗?
Ja͢*_*͢ck 12
我想你可以在事后做到:
// $str is the result of htmlspecialchars()
preg_replace('#<(/?(?:pre|b|em|u|ul|li|ol))>#', '<\1>', $str);
Run Code Online (Sandbox Code Playgroud)
它允许的编码版本<xx>,并</xx>在那里xx是在受控组允许的标签.
或者你可以选择旧式:
$content = htmlspecialchars($_POST['content'], ENT_QUOTES);
$turned = array( '<pre>', '</pre>', '<b>', '</b>', '<em>', '</em>', '<u>', '</u>', '<ul>', '</ul>', '<li>', '</li>', '<ol>', '</ol>' );
$turn_back = array( '<pre>', '</pre>', '<b>', '</b>', '<em>', '</em>', '<u>', '</u>', '<ul>', '</ul>', '<li>', '</li>', '<ol>', '</ol>' );
$content = str_replace( $turned, $turn_back, $content );
Run Code Online (Sandbox Code Playgroud)