0

我正在尝试实现此功能来处理我的页面的干净 url:http: //cubiq.org/the-perfect-php-clean-url-generator

当我像这样使用它时,它适用于任何角色:

echo toAscii('åäö');

但是一旦我从这样的输入(再次使用“åäö”)形式测试它:

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

我收到以下错误:注意:iconv() [function.iconv]:在第 12 行的 C:\xampp\htdocs\web\bsCMS\ysmt\testurl.php 中的输入字符串中检测到非法字符

这是Ascii的完整功能:

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 函数,但是如何?

4

1 回答 1

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。

于 2013-10-05T14:20:32.850 回答