気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

PHPプログラミングの教科書 [php1st.com]

ファイル名などに日本語が含まれるパスでbasename関数が失敗するバグ

投稿日:

basename関数はパスからディレクトリ情報を削除してベース名(「test.txt」など)を取得するための関数ですが、PHP5(使用バージョン:PHP 5.3.1)ではパスに日本語が含まれていると失敗します。

<?php
$a = "/dir/テスト.txt";
echo basename($a);
?>
日本語を含むパスでbasename関数が失敗する

日本語を含むパスでbasename関数が失敗する

この現象はPHP6では修正されているようですが、今すぐ対処する場合は、次のようなユーザー定義関数を作る方法があります。

<?php
$a = "/dir/テスト.txt";
echo my_basename($a);

function my_basename($a) {
    $temp = mb_substr(mb_strrchr($a, "/"), 1);
    return $temp;
}
?>
日本語を考慮したベース名の取得

日本語を考慮したベース名の取得

mb_strrchr関数は、パスに含まれる最後の「/」以降の文字列を取得し、mb_substr関数では先頭の1文字(/)を削除しています。

PHPの基礎が身に付いたかチェックするなら

PHP「直す力」養成ドリル

WordPressのPHPでお困りのときは

気軽にご相談ください。銀座教室・スカイプ・出張・メールで対応します。

西沢直木のIT講座/WordPress個別サポート

-PHP関数

Copyright© PHPプログラミングの教科書 [php1st.com] , 2018 All Rights Reserved Powered by AFFINGER5.