我正在尝试拆分文本表单字段的POST数据。我希望使用explode()函数将数据按每行分割
因此,首先我检查POST结果中是否有奇怪的字符;
$mails = mysql_real_escape_string($_POST["emails"]);
然后我运行这个,它不工作
$emails = explode("'r'n", $mails);
我做错了什么?不是吗''r''n?我的sql escape有点搞砸我了吗?
您还可以将新行转换为换行符,然后从<br />
s:中分解
$mails = mysql_real_escape_string(nl2br($_POST["emails"]));
$emails = explode("<br />", $mails);
因此,首先我检查POST结果中是否有奇怪的字符;
$mails = mysql_real_escape_string($_POST["emails"]);
这里有一些消息:不,你没有。你只是做了一些的事情,却不明白自己做了什么。这只是在做奇怪的事情而不是检查一些奇怪的事情。
然后需要在所使用的行分隔符字符上进行分解。看起来不是"'r'n"
,下一次尝试是"'n"
和"'r"
:
$emails = preg_split("/'R/u", $_POST["emails"], -1, PREG_SPLIT_NO_EMPTY);
(假设您有UTF-8输入)
试试这样的东西:
function guessLineEndings( $aString ) {
assert( is_string( $aString ));
if ( FALSE !== strpos( $aString, "'r'n" )) {
return 1;
} else if ( FALSE !== strpos( $aString, "'n" )) {
return 2;
} else if ( FALSE !== strpos( $aString, "'r" )) {
return 3;
} else {
return -1;
}
}
请注意,如果输入是单行,则不能猜测一行的结尾。
如果您运行动态SQL查询,请不要忘记这一点:
永远不要使用例如mysql_real_eescape_string()来进行转义!始终使用事先准备好的语句!
请查看OWASP的PHP安全备忘单,了解这一点:逃跑不安全