PHP para capitalizar todas as letras (incluindo após uma barra), exceto para certas palavras
Eu quero usar o PHP para limpar alguns títulos, capitalizando cada palavra, incluindo aqueles que seguem uma barra. No entanto, eu não quero capitalizar as palavras 'e', 'de' e 'o'.
Aqui estão duas seqüências de caracteres de exemplo:
tecnologia / técnico contábil e contabilidade
cirurgia ortopédica da coluna vertebral
Deve corrigir para:
Técnico em Contabilidade / Técnico e Contabilidade
Cirurgia Ortopédica da Coluna Vertebral
Aqui está o que eu tenho atualmente. Não sei como combinar a implosão com o preg_replace_callback.
// Will capitalize all words, including those following a slash
$major = implode('/', array_map('ucwords',explode('/',$major)));
// Is supposed to selectively capitalize words in the string
$major = preg_replace_callback("/[a-zA-Z]+/",'ucfirst_some',$major);
function ucfirst_some($match) {
$exclude = array('and','of','the');
if ( in_array(strtolower($match[0]),$exclude) ) return $match[0];
return ucfirst($match[0]);
}
Agora ele capitaliza todas as palavras da string, incluindo as que eu não quero.