当文件的路径中含有中文的时候,使用dirname等函数进行处理的时候,会得到不正常的结果
上述代码执行的结果 string(10) "D:aaabbb"
执行环境:
Server:Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8t PHP/5.4.12
X-Powered-By:PHP/5.4.12
windows7 chrome 32.0.1700.107 m
这是 PHP 的问题。PHP 在 Windows 上使用如下定义:
#define IS_SLASH_P(c) (*(c) == '/' || \
(*(c) == '\\' && !IsDBCSLeadByte(*(c-1))))
即,如果一个字符是 /,或者它是 同时它前边那个字符小于 0x80,那么才算是路径分隔符。
IS_SLASH_P 位于 TSRM/tsrm_virtual_cwd.文件,php_dirname位于 ext/standard/string.c:1518,zend_dirname` 中相关代码位于 Zend/zend_compile.c:7184。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。