WindowsServer上で動作するphpで、WindowsServer上にある日本語ファイル名を取り扱おうとすると、特定の漢字を含む場合、エラーになってしまいます。
php
1if (!copy($fullpath, 'tmp.xlsx')) { 2 print "failed to copy $fullpath...\n"; 3}
環境としては、ソースはsjisでdefault_charsetもsjisです。
Sjisで5Cを含むコード(「十」という漢字など)が原因であることは判っているのですが、ファイル名を変える訳にはいかないので、取り扱いに悩んでいます。
この場合、文字の後にエスケープコードを入れてやれば正常に扱えるのでしょうか?
本来であれば、5cを含む漢字全てに対応したいのですが、先ず特定文字での置換を正規表現で書いてみましたが、知識不足でうまくいきません。
php
1$str = '201902五六七八九十零一二三.xlsx'; 2// 5341は十のunicode 3$str_grep = preg_replace('/(.*)(\u5341)(.*)/', '$1$2$3', $str); 4echo $str_grep;
基礎的なことかもしれませんが教えて頂けると助かります。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー