【发布时间】:2013-12-16 05:07:43
【问题描述】:
我正在使用preg_replace 函数过滤掉一些用户输入。下面的函数应该过滤掉 Unicode 中的 控制字符,但似乎其中一些字符被归类为其他类别(标点符号、空格等),从而允许它们通过过滤。为什么会这样?
preg_replace("/[^\p{L}\p{M}\p{N}\p{P}\p{S}]/u", "", $message);
这里有一些使用上述方法通过过滤的 Unicode control characters
U+0085 NEXT LINE (NEL) …
U+008C PARTIAL LINE BACKWARD Œ
U+0095 MESSAGE WAITING •
preg_replace 的安全性如何?有没有更好的方法来做到这一点?
【问题讨论】:
标签: php unicode utf-8 preg-replace