我正在使用以下slugify方法,在我的本地开发工作正常,但在我的生产服务器(CentOs)和PCRE UTF8支持,但“没有Unicode属性支持”。
function slugify($text)
{
// replace non letter or digits by -
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
// trim
$text = trim($text, '-');
// transliterate
if (function_exists('iconv')) {
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
}
// lowercase
$text = strtolower($text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
if (empty($text)) {
return 'n-a';
}
return $text;
}
并且preg_replace不能在那里工作,是否有任何方法可以作为preg_replace工作,或任何可以作为上述函数工作的slugify muthod。
提前致谢。
答案 0 :(得分:1)
这听起来与此处描述的问题相同:http://chrisjean.com/2009/01/31/unicode-support-on-centos-52-with-php-and-pcre/。我在自己之前遇到过这个问题,而这个链接就是我修复它的方式(或者更确切地说,我们的系统管理员如何修复它)。
基本上,如果您没有“Unicode属性支持”,第一个正则表达式中的\ pL将无法运行或编译。