DZ(UTF-8)用户名检测的一个正则:\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8,这一段表示什么意思,很多中文英文都无法通过。文件:/uc_client/model/user.php
函数:check_username()
function check_username($username) {
$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
$len = $this->dstrlen($username);
if($len > 150 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
return FALSE;
} else {
return TRUE;
}
} function dstrlen($str) {
if(strtolower(UC_CHARSET) != 'utf-8') {
return strlen($str);
}
$count = 0;
for($i = 0; $i < strlen($str); $i++){
$value = ord($str[$i]);
if($value > 127) {
$count++;
if($value >= 192 && $value <= 223) $i++;
elseif($value >= 224 && $value <= 239) $i = $i + 2;
elseif($value >= 240 && $value <= 247) $i = $i + 3;
}
$count++;
}
return $count;
}查看了网上很多资料,很多人都说“\xA1\xA1”指代全角,“\xAC\xA3”指代汉字“欣”?是这样吗,其他的是指代什么
函数:check_username()
function check_username($username) {
$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
$len = $this->dstrlen($username);
if($len > 150 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
return FALSE;
} else {
return TRUE;
}
} function dstrlen($str) {
if(strtolower(UC_CHARSET) != 'utf-8') {
return strlen($str);
}
$count = 0;
for($i = 0; $i < strlen($str); $i++){
$value = ord($str[$i]);
if($value > 127) {
$count++;
if($value >= 192 && $value <= 223) $i++;
elseif($value >= 224 && $value <= 239) $i = $i + 2;
elseif($value >= 240 && $value <= 247) $i = $i + 3;
}
$count++;
}
return $count;
}查看了网上很多资料,很多人都说“\xA1\xA1”指代全角,“\xAC\xA3”指代汉字“欣”?是这样吗,其他的是指代什么
||^Guest|^游客|笴
现在需要一个正则,匹配一行字符串里面是否有重复。但是用这个失败貌似这一段有这个功能。function hasRepeatString($string)
{
return preg_match("/^c:\\con\\con/is", $string,$matches) ? true:false;
}$arr = array(
'woshuode我说的我说的怎么了我说的',
'我说的对,我说的',
'你妹妹的妹妹的妹妹的',
'ABC IS ABC NOW',
'HEHE 是啊....ASDFASDFAS35562 A HEHE DADSFASDF',
);
foreach ($arr as $s)
{
echo hasRepeatString($s) ? "HAS":"NOT"."\t".$s."\n";
}输出(全部都没有匹配到):X-Powered-By: PHP/5.2.0
Content-type: text/htmlNOT woshuode我说的我说的怎么了我说的
NOT 我说的对,我说的
NOT 你妹妹的妹妹的妹妹的
NOT ABC IS ABC NOW
NOT HEHE 是啊....ASDFASDFAS35562 A HEHE DADSFASDF
只是个路径 c:\con\con
print_r($r);
2Array
(
[0] => Array
(
[0] => oshuo
[1] => 我说的我说的怎么了我说的
) [1] => Array
(
[0] => o
[1] => 我说的
))
{
preg_match_all('/(.+).*\\1/', $string, $matches);
echo "\n\n".$string."\n";
print_r($matches);
//return empty($matches[1]) ?false:true;
}$arr = array(
'd【2次的】(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)',
'【2次的】(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)',
'【2次的】b(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)',
);
foreach ($arr as $s)
{
hasRepeatString($s);
}X-Powered-By: PHP/5.2.0
Content-type: text/htmld【2次的】(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)
Array
(
[0] => Array
(
[0] => d【2次的】(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd
[1] => (8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)
) [1] => Array
(
[0] => d
[1] => (8次内容)
))
【2次的】(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)
Array
(
[0] => Array
(
[0] => 【2次的】(8次内容)qqqq(8次内容)jjj 【2次的】
[1] => (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)
) [1] => Array
(
[0] => 【2次的】
[1] => (8次内容)
))
【2次的】b(8次内容)qqqq(8次内容)jjj 【2次的】 (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)
Array
(
[0] => Array
(
[0] => 【2次的】b(8次内容)qqqq(8次内容)jjj 【2次的】
[1] => (8次内容)eee(8次内容)dddd(8次内容)ffff(8次内容)ccc(8次内容)aaa(8次内容)
) [1] => Array
(
[0] => 【2次的】
[1] => (8次内容)
))还是用不了啊,里面的那个“点”代表的字符串的长度该如何限制
{
preg_match_all('/(.{'.$length.',}).*\\1/', $string, $matches);
echo "\n\n{$length}:\t".$string."\n";
print_r($matches);
//return empty($matches[1]) ?false:true;
}$arr = array(
'ddd【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】dfffddd',
);
foreach ($arr as $s)
{
hasRepeatString($s,10);
hasRepeatString($s,3);
hasRepeatString($s,1);
}X-Powered-By: PHP/5.2.0
Content-type: text/html10: ddd【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】dfffddd
Array
(
[0] => Array
(
[0] => 【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】
) [1] => Array
(
[0] => 【这个长度很长的这个长度很长的 】
))
3: ddd【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】dfffddd
Array
(
[0] => Array
(
[0] => ddd【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】dfffddd
) [1] => Array
(
[0] => ddd
))
1: ddd【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】dfffddd
Array
(
[0] => Array
(
[0] => ddd【这个长度很长的这个长度很长的 】 aaaaf【这个长度很长的这个长度很长的 】dfffddd
) [1] => Array
(
[0] => ddd
))如果那个“.”的最低长度可以限制就好了。
.+ 1 到 无穷个
.{n,m} n 到 m 个
谢谢了。不过这样的方法不太好,最后还是没有用了。
这个\x开头应该是十六进制的,请问PHP中如何将中文汉字转换成“\x”开头十六进制的。