我正在尝试实现此函数来处理我的页面的干净网址: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 函数,但是如何同步?
检查这是否有效:
在表单所在的 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');
将 HTTP 通信设置为 UTF8。