Иностранные символы в 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);

Это работает хорошо, если строка не начинается с иностранного символа, такого как Ç,Ş,Ğ, Если эти символы находятся в середине строки, они преобразуются изящно. Но если он начинается с них, он просто удаляет символы, а не заменяет их соответствующими.

Спасибо за любую помощь.

0

Решение

После утомительного поиска выясняется, что url_title() функция не главная причина. На самом деле, не CI удаляет исходные иностранные символы:

pathinfo($posted_file_full_name, PATHINFO_FILENAME);

Эта часть удаляет начальные символы. Я обновил свой код как:

$uploaded_file->filename  = str_replace('.'.$uploaded_file->extension,'',$posted_file_full_name);

и теперь все работает как положено. Надеюсь, что это помогает другим, кто застрял в такой фазе.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]