【发布时间】:2015-06-29 01:01:09
【问题描述】:
我在 Symfony 2.6 中将此代码用作干净的 URL 生成器:
namespace AppBundle\Utility;
class Utility {
public static function getSlug($string, $separator = '-')
{
// Source: http://cubiq.org/the-perfect-php-clean-url-generator
$slug = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
$slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);
$slug = strtolower(trim($slug, $separator));
$slug = preg_replace("/[\/_|+ -]+/", $separator, $slug);
return $slug;
}
}
它在我的开发环境中运行良好,带有特殊字符,但在我的生产环境(我的服务器)中却不行。它不会改变像 á é ñ % 这样的字符,它们只是消失了。示例“Artículo año 2000”,它显示:“artculo-ao-2000”。
我已经在 CentOS 5.11 中安装了 PHP 5.5.23,我在 http.conf for Apache 和 php.ini 中添加了 UTF-8 作为默认字符集,如果我输入“php app/check.php”,一切都很好,但是它只是建议一个 PHP 加速器。
我尝试上传一个带有特殊字符 /holá.html 的文件,它工作正常。
我不知道还能做什么。是不是prod环境配置的原因?
【问题讨论】: