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
  // 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)から