Wordpress PHP функция удаления букв после ударения. - PullRequest
0 голосов
/ 05 сентября 2011

Эта функция является частью плагина ProjectManager в WordPress.Я пытаюсь импортировать CSV-файл, но этот CSV-файл содержит акценты, потому что он сделан из имен, таких как "Adrián" или "Damián".Но когда этот код проходит эти имена, он удаляет все из буквы с акцентом, оставляя «Адри» и «Дами».

Есть ли здесь что-нибудь, что я мог бы изменить, чтобы устранить эту ошибку?

function importDatasets( $project_id, $file, $delimiter, $cols )
{
    if ( !current_user_can('import_datasets') ) {
        $this->setMessage( __("You don't have permission to perform this task", 'projectmanager'), true );
        return;
    }


    if ( $file['size'] > 0 ) {
        /*
        * Upload CSV file to image directory, temporarily
        */
        $new_file =  parent::getFilePath().'/'.basename($file['name']);
        if ( move_uploaded_file($file['tmp_name'], $new_file) ) {
            $handle = @fopen($new_file, "r");
            if ($handle) {
                if ( "TAB" == $delimiter ) $delimiter = "\t"; // correct tabular delimiter

                $i = 0; $l=0; // initialize dataset & line counter
                while (!feof($handle)) {
                      $buffer = fgets($handle, 4096);
                      $line = explode($delimiter, $buffer);

                      if ( $l > 0 && $line ) {
                      $name = $line[0];
                      $categories = empty($line[1]) ? '' : explode(",", $line[1]);
            /*
                        * get Category IDs from titles
                        */                      
                        $cat_ids = array();
                        if ( !empty($categories) ) {
                          foreach ( $categories AS $category ) {
                            $cat_ids[] = get_cat_ID($category);
                              }
                            }

                        // assign column values to form fields
                        foreach ( $cols AS $col => $form_field_id ) {
                            $meta[$form_field_id] = $line[$col];
                        }

                        if ( $line && !empty($name) ) {
                            $this->addDataset($project_id, $name, $cat_ids, $meta);
                            $i++;
                        }
                  }
                  $l++;
                }
                fclose($handle);

                $this->setMessage(sprintf(__( '%d Datasets successfully imported', 'projectmanager' ), $i));
            } else {
                $this->setMessage( __('The file is not readable', 'projectmanager'), true );
            }
        } else {
            $this->setMessage(sprintf( __('The uploaded file could not be moved to %s.' ), parent::getFilePath()) );
        }
        @unlink($new_file); // remove file from server after import is done
    } else {
        $this->setMessage( __('The uploaded file seems to be empty', 'projectmanager'), true );
    }
}

1 Ответ

0 голосов
/ 06 сентября 2011

Функция разнесения в php может неправильно определять двухбайтовые символы, как и многие другие функции php, если сервер не настроен должным образом.

Эта статья является действительно хорошей отправной точкой для работы с международными наборами символов в PHP: http://blog.mayflower.de/archives/342-Multilingual-Websites-with-PHP.html

...