如何通过getBasename()向file-io添加对特殊字符(如ÿÿż等)的支持

时间:2011-11-24 16:48:47

标签: php file-io utf-8

我需要修改下面的功能,以获得更好的国际角色支持。

它读取.txt文件的目录,并使用file_get_contents()和getBasename()将这些文件导入到站点中。这种方法非常有效,直到发送到getBasename()方法的文件名包含特殊字符,如ąÿż等。

例如,在波兰语中,“Privacy Policy.txt”文件名为Politykaprywatnoÿci.txt

但是,当它导入网站时,页面名称变为:Polityka prywatno

你可以看到它在ÿ

处截止

如何修改此功能以支持这样的字符集?

function insert_pages(){
DEFINE ('PAGES', dirname(__FILE__).'/pages/');
$directory_pages = new DirectoryIterator(PAGES); 
foreach ($directory_pages as $files_pages) 
    {
    if ($files_pages->isFile()) 
        {
        $file_name_page = $files_pages->getFilename();
        $my_page_content = file_get_contents(PAGES. $file_name_page);
        $my_page['post_content'] = addslashes($my_page_content);
        $my_page['post_title'] = $files_pages->getBasename('.txt');
        $my_page['post_type'] = 'page';
        $my_page['post_status'] = 'publish';
        wp_insert_post($my_page);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

Php文件系统函数接受,返回ISO-8859-1中的文件名

使用is_file(utf8_decode($filename)),将在ISO-8859-1中更改带有可表示字符的UTF-8字符。

您的字符是多字节字符,PHP5无法解决它们