pathinfo()phpの異なるバージョンにおけるマルチバイト文字処理の異なる結果
3337 ワード
phpinfo()関数はパスを処理する際、phpの低バージョンではマルチバイト文字を処理できません.ここでテストするのはphp 5です.3とphp 5.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 5.3のbasename()でもマルチバイト文字がフィルタされます
echo basename('/resources/img/stock/wxb 001/美しい景色.png')
//出力:.png
では、低バージョンでは、マルチバイト文字の処理を実現するには、次の方法を用いることができる.
1
2
3
4
5
6
7
8
9
10
11
12
13
$file='/resources/img/stock/wxb 001/美しい景色.png';
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] =>
)
//同時にphp 5.3のbasename()でもマルチバイト文字がフィルタされます
echo basename('/resources/img/stock/wxb 001/美しい景色.png')
//出力:.png
では、低バージョンでは、マルチバイト文字の処理を実現するには、次の方法を用いることができる.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// your code goes here
$file='/resources/img/stock/wxb 001/美しい景色.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)から