Buonasera!

Premettendovi che sono nuova nel mondo del PHP, ho un quesito da porvi.
Ho scomposto il nome "maria de lucia" e ne ho ricavato 2 sottostringhe alla quale volevo applicare l'ucfirst.
Purtroppo, nonostate il gettype riconosca nelle sottostringhe il valore "string", l'ucfirst non funziona.

Vi posto il codice

Codice PHP:
$stringa "maria de lucia";
$lunghezzaStringa str_word_count ($stringa);
$primoSpazio strpos ($stringa" ");
$sottoStringaRimanente substr ($stringa$primoSpazio);
echo 
"sottoStringaRimanente:".$sottoStringaRimanente."<hr>";
$eventualeSecondoSpazio strrpos ($stringa" ");
$sottoStringaRimanente2 substr ($stringa$eventualeSecondoSpazio);
echo 
"sottoStringaRimanente2:".$sottoStringaRimanente2 "<hr>";

$primaParte substr_replace($stringa," "$primoSpazio);

echo 
str_word_count($sottoStringaRimanente) . "<hr>";

$calcoloSecondaParte str_word_count($sottoStringaRimanente);

$secondaParte substr_replace($sottoStringaRimanente," "$calcoloSecondaParte+1);
echo 
gettype($secondaParte) . "<hr>";

echo 
ucfirst($primaParte) . ucfirst($secondaParte); 
Il risultato di ciò è:
Maria de

Indipendentemente dal fatto che esistono altri modi per avere quel risultato (come ucword), qualcuno sa spiegarmi perché non funziona?
Perché il "de" non diventa maiuscolo?