Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Php 正则表达式过滤日语_Php_Regex_Unicode_Cjk - Fatal编程技术网

Php 正则表达式过滤日语

Php 正则表达式过滤日语,php,regex,unicode,cjk,Php,Regex,Unicode,Cjk,我想允许A-Z,A-Z和日文汉字,平假名,片假名等等。 到目前为止,我已经想到了这个: $pattern = '/[^\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u'; preg_replace($pattern, '', $string); 我不确定这种形式的正则表达式是否是特定于PHP的。我正在接受URL中的字符串,并希望过滤掉引号和其他“危险”字符。上述“模式”的奇怪之处在于,无论是否有“d”,数字

我想允许A-Z,A-Z和日文汉字,平假名,片假名等等。 到目前为止,我已经想到了这个:

$pattern = '/[^\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u';
preg_replace($pattern, '', $string);
我不确定这种形式的正则表达式是否是特定于PHP的。我正在接受URL中的字符串,并希望过滤掉引号和其他“危险”字符。上述“模式”的奇怪之处在于,无论是否有“d”,数字都不匹配

因此,下面做了同样的事情:

$pattern = '/[^\d\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u';

我对任何改进或更正感兴趣-我自己不是一个正则表达式向导。

\w
包括数字;它相当于
[A-Za-z0-9.]
。因此,无论哪种方式,您都允许它们。

\w
包括数字;它相当于
[A-Za-z0-9.]
。所以无论哪种方式,您都允许使用它们。

在Unicode上

x3040-x308f:平假名,包括一些旧字符。 x30a1-x30ff:片假名。包括一些符号

但是,x4e00-x9eff是为CJK字符集指定的。不是日本人

CJK指中国、日本和韩国

您可以用unicode描述CJK字符区域。然而,你不能用unicode来描述日本汉字区域。因为在CJK代码区,中国汉字和日本汉字是混合的。没有完全分开。中国汉字和日本汉字有一些共同之处。但由于双方各自的进化,大多数角色都是不同的

请参阅以下网站。它相当重。你的电脑应该有足够的字体来阅读。 在Unicode上

x3040-x308f:平假名,包括一些旧字符。 x30a1-x30ff:片假名。包括一些符号

但是,x4e00-x9eff是为CJK字符集指定的。不是日本人

CJK指中国、日本和韩国

您可以用unicode描述CJK字符区域。然而,你不能用unicode来描述日本汉字区域。因为在CJK代码区,中国汉字和日本汉字是混合的。没有完全分开。中国汉字和日本汉字有一些共同之处。但由于双方各自的进化,大多数角色都是不同的

请参阅以下网站。它相当重。你的电脑应该有足够的字体来阅读。

将危险人物列入黑名单并搜索它们可能会更容易。我不知道哪些人物可能是危险人物。有这方面的信息吗?我在MySQL where子句中使用这个字符串。所以它真的需要100%的消毒。你可以用准备好的(例如)来代替吗?这通常会更安全。@matthewflaschen,我正在使用ZF的db和select类,它们显然使用预先准备好的语句。你知道情况是否如此吗?是的,这是一个预先准备好的语句类。将危险字符列入黑名单并搜索它们可能更容易。我不知道哪些字符可能是危险的。有这方面的信息吗?我在MySQL where子句中使用这个字符串。所以它真的需要100%的消毒。你可以用准备好的(例如)来代替吗?这通常会更安全。@matthewflaschen,我正在使用ZF的db和select类,它们显然使用预先准备好的语句。你知道这是不是真的吗?是的,是一个预先准备好的语句类。所以“d”只是[0-9],而“w”是[a-Za-z0-9]?@sims,没错。你可能会发现这很有帮助。我用的很明显不清楚。谢谢你的澄清@西姆斯,那个网站总体上还不错,在另一页上,解释了POSIX字符类。那么我可以假设上面的正则表达式与ZF类结合起来应该是非常安全的吗?所以“d”只是[0-9],而“w”是[A-Za-z0-9_]?@sims,这是正确的。你可能会发现这很有帮助。我用的很明显不清楚。谢谢你的澄清@西姆斯,那个网站总体上还不错,在另一页上,解释了POSIX字符类。那么我可以假设上面的正则表达式与ZF类结合起来应该是非常安全的吗?谢谢你提供的信息。我特别担心我过滤了正确的字符。谢谢你提供的信息。我特别担心我过滤了正确的字符。