2013-10-05 52 views
0

我想要实现这个函数来处理干净的URL为我的网页:http://cubiq.org/the-perfect-php-clean-url-generatorUTF-8字符编码的麻烦

当我使用它像这样它工作正常的任何字符:

echo toAscii('åäö'); 

但只要我(与“AAO”再次)形式像这样测试它从输入:

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”);'这对我来说一直有效。假设数据库连接'$ con = mysqli_connect(“xxx”,“xxx”,“xxx”,“xxx”);' –

+0

尝试使用'header('Content-type:text/html; charset = utf-8') ;'在你的php之上,并在html中使用'' –

+0

@ Fred-ii-与MySQL连接无关。这是'iconv()'函数调用失败。 – ComFreek

回答

1

检查,如果这个工程:

在HTML,那里的形式驻留,使用:

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

要设置为默认的字符编码为UTF8。这将使浏览器设置UTF8并以UTF8发送POST中的变量。

在你的PHP

然后,使用:

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

要设置为UTF-8 HTTP通信。