Converter string para primeira letra em maiúsculo e palavras desejadas em minúsculo na mesma string.
<?php
function palavras_strtolower($input, $array_palavras = array('da', 'de', 'do', 'dos', 'das'))
{
//Separar todas as palavras baseadas em espaços
$array_entrada = explode(' ', strtolower($input));
//Criar o array de saída
$resultado = array();
//Definindo áspa
$aspa = "'";
//Faz-se um loop às palavras, permanecendo as palavras desejadas em minúsculo
foreach($array_entrada as $palavra)
{
if(in_array($palavra, $array_palavras)){
$resultado[] = $palavra;
} else {
if(strstr($palavra, $aspa)){
list ($palavra1, $palavra2) = split($aspa, $palavra);
$resultado[] = ucfirst($palavra1) . $aspa . substr(ucfirst($palavra2), 0, 1) . substr(mb_strtolower($palavra2), 1);
} else {
$resultado[] = substr(ucfirst($palavra), 0, 1) . substr(mb_strtolower($palavra), 1);
}
}
}
return implode(' ', $resultado);
}