我从这样的字符串开始:“我想:\r\n\r\n1。)摆脱这个烂摊子\r\n\r\n\2。)现在请”(这是“清理”用户输入文本)。
所以基本上我的陈述是这样的:
$query = sanitize($_POST['query']); // gives the result string
我想从这个字符串中删除“\r\n\r\n”。到目前为止,我已尝试使用以下方法来做到这一点:
$query = preg_replace("/\r\n\r\n/", " ", $query);
或者
$query = str_replace("\r\n\r\n", " ", $query);
似乎没有一个工作?
但是,如果我执行以下操作:
$query = "I would like to:\r\n\r\n1.) Rid this mess\r\n\r\n\2.) Now Please";
$query = preg_replace("/\r\n\r\n/", " ", $query); // I tried str_replace() too
var_dump($query);
exit;
我得到了我想要的输出......
有人可以向我解释为什么会发生这种情况以及我该如何解决这个问题?
任何建议、意见或建议将不胜感激,因为我几乎不会因为拔头发而秃顶......
谢谢!
编辑 :
这可能有助于功能 sanitize() :
function html($text)
{
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}
function htmlout($text)
{
return html($text);
}
function cleanInput($input)
{
$search = array(
'@<script[^>]*?>.*?</script>@si', // Strip out javascript
'@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags
'@<style[^>]*?>.*?</style>@siU', // Strip style tags properly
'@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments
);
$output = preg_replace($search, '', $input);
$output = htmlout($output);
return $output;
}
function sanitize($input)
{
if (is_array($input))
{
foreach($input as $var=>$val)
{
$output[$var] = sanitize($val);
}
}
else
{
include "C:/wamp/www/includes/inc/main/db.inc.php";
if (get_magic_quotes_gpc())
{
$input = stripslashes($input);
}
$input = cleanInput($input);
$output = mysqli_real_escape_string($link, $input);
}
return $output;
}