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

  1. PHP関数
  2. 14 view

ファイル名などに日本語が含まれるパスで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関数の最近記事

  1. mb_send_mail関数でReturn-Pathを設定する方法

  2. is_numeric関数とis_int関数の違い

  3. PHPのdate関数の使用例

  4. isset関数とempty関数と「!」の違い

  5. 文字列を分割して配列を作成するexplode関数

関連記事

PAGE TOP