Я использую иностранных акцентированные символы с url_title()
в CodeigniterИностранные Символов в url_title() в Codeigniter
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);
Он работает хорошо КРОМЕ строка не начать с иностранным характером, как Ç
, Ş
, Ğ
. Если этот символ находится в середине строки, он изящно преобразует. Но если он начинается с них, он просто удаляет символы вместо замены с помощью mached.
Спасибо за любую помощь.
Попробуйте добавить модификатор 'u' в ваше регулярное выражение. ([Модификаторы шаблонов ¶] (http://php.net/manual/en/reference.pcre.pattern.modifiers.php)) –