T086ѧϰ�� | վ��ѧԺ | �����ĵ� | ���� | Ъ���� | IP��ַ��ѯ | �������� | ���ջ��� | �����ֵ� | ���ù��� | ������Ϣ��ѯ

GBK�ַ�����addslashes������ע��©����BUG�Ľ����취

�� ����ʱ�䣺2011-05-30 | ���壺�� �� С��
[����]���Ҷ�֪����addslashes�ǹ���������Ϣ�ĺ�������������PHP����������ħ����������ôaddslashes�����������Զ����ж��û��ύ���� Ϣ���й��ˡ�����addslashes�����ڽ���ת����ʱ����ֻ�Զ������ַ�����������������...

���Ҷ�֪����addslashes�ǹ���������Ϣ�ĺ�������������PHP����������ħ����������ôaddslashes�����������Զ����ж��û��ύ���� Ϣ���й��ˡ�����addslashes�����ڽ���ת����ʱ����ֻ�Զ������ַ����������������ַ�������������BUG��©��������©���IJ��������ҿ���ȥ�� ��������PHP�ַ������ƹ�©���ܽ�����ע���Ҳ�ϸ˵�ˣ���Ҫ˵˵BUG��

����Ҫ˵�����ǣ���BUGֻ����GBK�ַ����»�������GB2312��Ӱ�졣��������GBK�ַ����ı��뷶Χ��

 

����
������������������������������λ��������λ
————————————————————————
��GBK/1:GB2312�Ǻ��ַ��š�: A1~A9 || A1~FE
��GBK/2:GB2312���֡�������: B0~F7 || A1~FE
��GBK/3:���人�֡��������� : 81~A0 || 40~FE
��GBK/4:���人�֡��������� : AA~FE || 40~A0
��GBK/5:�����Ǻ��֡������� : A8~A9 || 40~A0


����֪����addslashes����һ��Ҫת���ĸ��ַ���' " \ NULL��NULL���ַ����������������⣬������ ' ��˫���� " ��ASCII���ֱ���27��22������GBK�ַ����ķ�Χ�ڣ�����Ҳ�����������⡣

�� \ ��ASCII����5C����GBK���伯�ĵ�λ��Χ�ڣ�ͬʱaddslashes�����������Ǻ󲻻ῼ���ַ���������BUG�Ͳ����ˡ���5C��β�ķ������� �֣�����“�\”��0xDC5C����������addslashes�������˵�ʱ����5C�ᱻ�滻��5C5C��Ҳ����˵0xDC5C�ᱻ�滻�� 0xDC5C5C��ʵ����������“�\\”��

ͬ����ת�������뺯��stripslashesҲ������BUG���������롣

��������BUG�İ취ֻ��һ���������Լ�дһ�������ַ���Ч����addslashes������ʵ�ʺ������£�

 

����
// �����ַ�ת�庯��
function gbk_addslashes($text) {
for ( ; ; ) {
$i = mb_strpos($text, chr(92), 0, "GBK");
if ($i === false) break;
$T = mb_substr($text, 0, $i, "GBK") . chr(92) . chr(92);
$text = substr($text, strlen($T) - 1);
$OK .= $T;
}
$text = $OK . $text;
$text = str_replace(chr(39), chr(92) . chr(39), $text);
$text = str_replace(chr(34), chr(92) . chr(34), $text);
return $text;
}


 

����
// ת�������뺯��
function gbk_stripslashes($text) {
$text = str_replace(chr(92) . chr(34), chr(34), $text);
$text = str_replace(chr(92) . chr(39), chr(39), $text);
for ( ; ; ) {
$i = mb_strpos($text, chr(92) . chr(92), 0, "GBK");
if ($i === false) break;
$T = mb_substr($text, 0, $i, "GBK") . chr(92);
$text = substr($text, strlen($T) + 1);
$OK .= $T;
}
$text = $OK . $text;
return $text;
}


��ʵ��ʹ���У�����ϵͳ������ħ����������ô��Ҫ��stripslashes�Ա�������ת�������룬Ȼ����ʹ�������Լ���gbk_addslashes����ת�塣

�������ԣ����ַ����������Ա���BUG�����������Ա���ע��©���IJ�������Ϊ�˺��������Բ�����GBK���ַ�����ת�ƣ�����0xbf27���ᱻת��Ϊ0xbf5c27�����Ҿ��ܲ��ԣ��Ұ��ۺ����񡣣���

�� Ȼ�����ְ취Ӧ���鷳����������ϵͳaddslashes������˵��Ч�ʻή�͡�����������Ψһ�뵽��GBK�ַ���BUG�Ľ����취����ʵ�һ��ǽ������� Ӧ�÷�����ͳ����ϰ�ߣ���ʼ��ӦUTF-8���̡��Ͼ�UTF-8��ͨ���ַ������ܶ�GBK�µ�BUG������UTF-8�ϲ�����

������ɶ���õĽ����취�������黶ӭ���ۡ�

ԭ�ģ�http://www.c-dd.org/post/10/

  • ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
  • �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
������ѯ Health Check Gulangyu
© 2017 T086ѧϰ�� - T086.com(ԭitlearner.com)
RunTime:9.01ms QueryTime:7