pathinfo()在php不同版本中对于对多字节字符处理的不同结果

phpinfo()函数在处理路径时,在php的低版本中无法处理多字节字符,这里测试的是php5.3和php5.6 的区别


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<?php

// your code goes here

echo phpversion();

print_r(pathinfo("/resources/img/stock/wxb001/美景.png"));

输出:

5.6.4-2

Array

(

    [dirname] => /resources/img/stock/wxb001

    [basename] => 美景.png

    [extension] => png

    [filename] => 美景

)

但是在php5.3.3版本中

<?php

// your code goes here

echo phpversion();

print_r(pathinfo("/resources/img/stock/wxb001/美景.png"));

输出:

5.3.3

Array

(

    [dirname] => /var/www/www.shima.jp.net/resources/img/stock/wxb001

    [basename] => .png

    [extension] => png

    [filename] =>

)

// 同时,在php5.3中basename()也会过滤掉多字节字符

echo basename(‘/resources/img/stock/wxb001/美景.png‘)

// 输出:.png

那么在低版本中可以使用下面方法来实现多字节字符的处理


1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

// your code goes here

$file = ‘/resources/img/stock/wxb001/美景.png‘;

$file_dir = dirname($file );

$file_basename = substr(strrchr($file, DIRECTORY_SEPARATOR), 1);

$file_name = substr($file_basename, 0, strrpos($file_basename, "."));

$file_extension = end(explode(".", $file_basename));

echo $file_dir; // /resources/img/stock/wxb001

echo $file_basename// 美景.png

echo $file_name; // 美景

echo $file_extension; // png

来自为知笔记(Wiz)

时间: 2024-10-09 01:32:14

pathinfo()在php不同版本中对于对多字节字符处理的不同结果的相关文章

IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:rect.left-left, right:rect.right-left } 错误代码(IE8以上都不会报错) return{ top:rect.top-top, bottom:rect.bottom-top, left:rect.left-left, right:rect.right-left, }

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系 一.OpenGL OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux).实用工具库(glut),窗口库(glx.agl.wgl)和扩展函数库等. gl是核心,glu是对gl的部分封装.glx.agl.wgl 是针对不同窗口系统的函数.glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代.).扩展函数库是硬件厂商为实现硬件更新利用Op

debug、 release两个版本中正确运行的一些经验

在Qt编程中,默认的是debug版本,在编译器中可以正常的使用,但是单独运行.exe可执行文件时却发现系统提示缺少文件.其实就是缺少必要的.dll动态库文件.根据提示添加需要的.dll动态库文件即可.另外,这些动态库文件就在Qt的安装目录中,找到复制进去就行了. 并且,debug需要添加的动态库文件名字一般就是XXXd.dll文件,比如Qt5Cored.dll文件.但是在release版本中,需要添加的文件根debug版本中的是一样的,但是名字有一点区别.比如在debug版本中添加的是Qt5Co

关于python3.4版本中的zip函数

特别注意: 在window,显示变量 print(x);而在linux中 print x 例如,有两个列表: >>>a = [1,2,3] >>>b = [4,5,6] 使用zip()函数来可以把列表合并,并创建一个元组对的列表. >>>zip(a,b) [(1, 4), (2, 5), (3, 6)] #注意在Python3.4版本中,显示 >>> zip(a,b)<zip object at 0x01FB2E90> 如

[译] OpenStack Kilo 版本中 Neutron 的新变化

OpenStack Kilo 版本,OpenStack 这个开源项目的第11个版本,已经于2015年4月正式发布了.现在是个合适的时间来看看这个版本中Neutron到底发生了哪些变化了,以及引入了哪些新的关键功能. 1. 扩展 Neutron 开发社区 (Scaling the Neutron development community) 为了更好地扩展 Neutron 开发社区的规模,我们在Kilo开发周期中主要做了两项工作:解耦核心插件以及分离高级服务.这些变化不会直接影响 OpenStac

微软BI 之SSIS 系列 - 2008 版本中变量 Int64 无法保存 bigint 类型数据的BUG

开篇介绍 这是今天在帮别人看一个 2008R2 版本的项目时发现的一个 Bug,这个 Bug 在 SQL SERVER 2012 有的版本中可能已经解决,但在论坛上看到有的仍然存在. 在 SQL SERVER 2008 R2 版本中,比如从一个数据库表中取一个 BIGINT 类型的数据,赋值给一个 Int64 类型的变量,按照我们的理解肯定是正确的. 但是结果是报错了 - 错误原因:类型不一致造成的. [Execute SQL Task] Error: An error occurred whi

低版本中使用高版本出现的类怎么办?

原理概述 简单来说就是三个字——黑魔法. 利用这种黑魔法的例子已经越来越多,我所知道的最早使用这种方法的是一个老外在三年为了解决NSUUID而使用的. 我们国内团队开发的FDStackView是一个非常好的开源库,已经有1500+颗星星了,希望大家多多支持我们国内的团队,在FDStackView库中也用到了相同的技术,网上有人发出了分析实现原理的文章,但分析的很浅,而且根本没有说在点子上,使得这种黑魔法的魅力并没有被大家欣赏到,我这里做了一些功课,把这个原理详细的阐述一下,以及这里的关键点在哪里

在低于android 5.0的版本中ActionBar不显示

我从ABS切换到AppCompat与Material theme(仅适用于API21) 我的配置文件如下: <application android:theme="@style/AppStyle" <-- values folder --> <style name="AppStyle" parent="@style/AudioRecTheme"> <style name="AudioRecTheme&

在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义

有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一切OK,没问题,但用VS2013做时, 就提示这错误 后仔细看了一下设计生成的源码,嘿,还真有区别,在VS2012与VS2013中, ReportViewer生成的代码在引用报表数据时,使用的是ReportEmbeddedResource属性 <LocalReport ReportEmbeddedR