Я запутался в том, что именно ты пытаешься сделать.В PHP уже есть функция ucwords()
, которая может сделать это, и я не вижу никакой разницы в том, что вы делаете ... Если вы пишете с заглавной буквы первую букву каждого слова, делайте разделителикакая разница?Имеет ли значение вообще, что между двумя словами есть «&»?
Редактировать: Кажется, теперь я понимаю.Я предполагаю, что единственная проблема, с которой вы сталкиваетесь, заключается в том, что вы не можете сказать, что это верхний регистр текста, потому что он уже весь в верхнем регистре, все, что вам нужно сделать, это сначала сделать его строчным.Я также изменил его, чтобы полностью избавиться от «следующего персонажа», это было ненужным.Если вы найдете совпадение, просто измените следующий символ на верхний регистр.Попробуйте это:
// method in stringModify Class
function capitalizeWords($words, $charList) {
$words = strtolower($words); // lowercase everything that isn't capitalized
for ($i = 0; $i < strlen($words); $i++) {
if (strpos($charList, $words[$i]) !== false) $words[$i+1] = strtoupper($words[$i+1]);
}
return $words;
}
// Calling method
$stringModify->capitalizeWords("WELLNESS & RENOMME", " -&");