【发布时间】:2014-12-08 14:00:35
【问题描述】:
我在 Codeigniter 中使用带有 url_title() 的外国重音字符
function url_title ($str,$separator='-',$lowercase=FALSE) {
if ($separator=='dash') $separator = '-';
else if ($separator=='underscore') $separator = '_';
$q_separator = preg_quote($separator);
$trans = array(
'\.'=>$separator,
'\_'=>$separator,
'&.+?;'=>'',
'[^a-z0-9 _-]'=>'',
'\s+'=>$separator,
'('.$q_separator.')+'=>$separator
);
$str = strip_tags($str);
foreach ($trans as $key => $val) $str = preg_replace("#".$key."#i", $val, $str);
if ($lowercase === TRUE) $str = strtolower($str);
return trim($str, $separator);
}
我将函数称为url_title(convert_accented_characters($str),TRUE);。
$str 被填充为:
$posted_file_full_name = $_FILES['userfile']['name'];
$uploaded_file->filename = pathinfo($posted_file_full_name, PATHINFO_FILENAME);
$uploaded_file->extension = pathinfo($posted_file_full_name, PATHINFO_EXTENSION);
除非字符串以 Ç,Ş,Ğ 之类的外来字符开头,否则它工作得很好。如果这些字符在字符串的中间,它会优雅地转换。但如果以这些开头,它只是删除字符而不是用机器替换。
感谢您的帮助。
【问题讨论】:
-
尝试将
u修饰符添加到您的正则表达式中。 (Pattern Modifiers ¶)
标签: php codeigniter slug non-ascii-characters