2013-10-05 4 views
0

Я пытаюсь реализовать эту функцию для обработки чистой URL, для моей страницы: http://cubiq.org/the-perfect-php-clean-url-generatorUTF-8 символов Проблема кодирования

Он отлично работает для любого характера, когда я использую его так:

echo toAscii('åäö'); 

Но как только я проверить его от входа (опять-таки с «АОА») форма, как это:

if (isset($_POST['test'])) { 
    $test = $_POST['test']; 
} 
echo toAscii($test); 

Я получаю следующее сообщение об ошибке: Примечание: Iconv() [function.iconv]: Обнаружен нелегальный характер в вход Строка в C: \ XAMPP \ HTDOCS \ сеть \ bsCMS \ ysmt \ testurl.php на линии 12

Это полная функция ToAscii:

setlocale(LC_ALL, 'en_US.UTF8'); 
function toAscii($str, $replace=array(), $delimiter='-') { 
    if(!empty($replace)) { 
     $str = str_replace((array)$replace, ' ', $str); 
    } 

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str); 
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean); 
    $clean = strtolower(trim($clean, '-')); 
    $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean); 

    return $clean; 
} 

Я думаю, что я должен синхронизировать кодировку из форма функции toAscii, но как?

+0

Попробуйте что-то повлиять на '$ con> set_charset (" utf8 ");' это всегда сработало для меня. Предположим, что DB-соединение '$ con = mysqli_connect (" xxx "," xxx "," xxx "," xxx ");' –

+0

Попробуйте использовать 'header ('Content-type: text/html; charset = utf-8'). ; 'поверх вашего php и в html use' ' –

+0

@ Fred-ii- Эта проблема имеет не имеет ничего общего с подключением MySQL. Это вызов функции 'iconv()', который терпит неудачу. – ComFreek

ответ

1

Проверьте, работает ли это:

В HTML, где находится форма, использование:

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

Чтобы установить в качестве кодировки символов по умолчанию в UTF8. Это заставит браузер установить UTF8 и отправить переменные в POST в UTF8.

Затем в PHP, используйте:

header ('Content-type: text/html; charset=utf-8');

Чтобы установить HTTP связь с UTF8.

Смежные вопросы