Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp消毒和特殊字符_Php_Cakephp_Encoding - Fatal编程技术网

Cakephp消毒和特殊字符

Cakephp消毒和特殊字符,php,cakephp,encoding,Php,Cakephp,Encoding,我在字符串上使用sanitize::paranoid,但我需要排除一些特殊字符,但它似乎不起作用 $content=sanitize::paranoid($content,array('à',' ')); 我已经将文件的编码从ansi改为utf8,但cakephp并不喜欢它,所以我需要找到另一种方法 该数组应该包含要从清理中排除的字符列表,但它会不断删除“a”,我希望这些字符出现在最后一个字符串中。Sanitize:paranoid是一个简单的preg\u replace($allow只是附加

我在字符串上使用sanitize::paranoid,但我需要排除一些特殊字符,但它似乎不起作用

$content=sanitize::paranoid($content,array('à',' '));
我已经将文件的编码从ansi改为utf8,但cakephp并不喜欢它,所以我需要找到另一种方法


该数组应该包含要从清理中排除的字符列表,但它会不断删除“a”,我希望这些字符出现在最后一个字符串中。

Sanitize:paranoid
是一个简单的
preg\u replace
$allow
只是附加字符,转义):

正如你所见,
偏执狂
相当偏执。。。默认情况下不接受非ascii字母

您拥有
的文件
可能以另一种编码保存(在windows上工作?)


无论如何,如果您愿意,您可以使用
/[^\p{L}]/u
编写一个更好的过滤器,它排除了任何语言中的字母

取自Sanitize::paranoid函数:

cleaned = preg_replace("/[^{$allow}a-zA-Z0-9]/", '', $string);
由于您的字符(a)不在此范围内,因此将不会返回。 如果您使用的是Cake 2.x,您可以覆盖应用程序文件夹中的Sanitize类 并替换所有出现的:

a-zA-Z0-9
与:

这应该返回重音字符(对我来说是这样)。你也可以看看
如果您愿意,但如果您正在构建CMS,这可能是一个问题。

这一定是一些cakephp偏执狂不知道的特殊编码问题

Sanitize::paranoid($badString, array(' ', '@')); @ is the allowed char

它应该是有效的。我自己也尝试过这个例子

您使用的是哪个蛋糕版本..?您有支持unicode的PCRE吗?@BarryChapman这是一个cms,我们无法对服务器配置进行假设不幸的是,许多解析/清理类严重依赖正则表达式。您可能想检查一下,$content获取数据的数据源也是utf8吗?您是否在app/Config/Database.php中设置了UTF8编码变量(如果来自DB)?谢谢,这几乎可以很好地工作,但它也替换了空格。我对正则表达式不是很在行,我怎样才能排除空白呢?在
]
前面加一个空格,就这样
\w
Sanitize::paranoid($badString, array(' ', '@')); @ is the allowed char