простой способ заглавных букв первой буквы каждого слова (разделенных пробелом)
$words = explode(” “, $string);
for ($i=0; $i<count($words); $i++) {
$s = strtolower($words[$i]);
$s = substr_replace($s, strtoupper(substr($s, 0, 1)), 0, 1);
$result .= “$s “;
}
$string = trim($result);
с точки зрения подражания приведенному вами примеру "O'REILLY"
разбиение строки на оба пробела и 'не сработает, так как оно будет использовать заглавную букву, которая появляется после апострафа, то есть в фредах
так что я бы, наверное, попробовал что-то вроде
$words = explode(” “, $string);
for ($i=0; $i<count($words); $i++) {
$s = strtolower($words[$i]);
if (substr($s, 0, 2) === "o'"){
$s = substr_replace($s, strtoupper(substr($s, 0, 3)), 0, 3);
}else{
$s = substr_replace($s, strtoupper(substr($s, 0, 1)), 0, 1);
}
$result .= “$s “;
}
$string = trim($result);
Это должно поймать О'Рейли, О'Клока, О'Доннелла и т. Д. Надеюсь, это поможет
Обратите внимание, что этот код не проверен.