У меня были проблемы с поиском функции, которая делает именно то, что я ищу.К сожалению, эта функция не совместима с UTF-8.Эта функция похожа на базовую ucwords
, но она также выполняет верхний регистр символа, за которым следует один из найденных символов (в моем случае мне нужно применить верхний регистр к символу, найденному после -
).
Вот функция:
<?php
function my_ucwords($string)
{
$noletters='"([/-'; //add more if u need to
for($i=0; $i<strlen($noletters); $i++)
$string = str_replace($noletters[$i], $noletters[$i].' ', $string);
$string=ucwords($string);
for($i=0; $i<strlen($noletters); $i++)
$string = str_replace($noletters[$i].' ', $noletters[$i], $string);
return $string;
}
$title = 'ELVIS "THE KING" PRESLEY - (LET ME BE YOUR) TEDDY BEAR';
echo my_ucwords(strtolower($title));
?>
Как только я добавлю акценты в мою строку, например:
echo my_ucwords(strtolower( "saint-étienne" )) //return: Saint- instead of Saint-Étienne
Есть идеи?Я знаю вместо strlen
я мог бы использовать mb_strlen
.Но как насчет других?
Редактировать: Просто напоминание, что мне нужен не только простой ucwords
, работающий в UTF-8
.Мне нужно, чтобы он применял заглавные буквы к любому символу, найденному после -
.
Я все еще пытаюсь выяснить это сам.