<?php
function reduzirNome($nomeCompleto, $numeroPalavras = -1) {
$palavras = explode(' ', trim($nomeCompleto)); // Divide o nome completo em um array de palavras
// Verifica se há pelo menos um nome
$partes = count($palavras);
if ($partes === 0) return '';
elseif ($partes === 1) return $palavras[0];
// O primeiro nome será sempre incluído
$primeiroNome = array_shift($palavras);
// Se o número de palavras for positivo
if ($numeroPalavras > 0) {
$limite = min($numeroPalavras, count($palavras)); // Verifica o limite, garantindo que ele não exceda o tamanho do array
$palavras = array_slice($palavras, 0, $limite); // Retorna as palavras que em breve se unirão ao primeiro nome
} elseif ($numeroPalavras < 0) {
$limite = min(+$numeroPalavras, count($palavras)); // Verifica o limite, garantindo que ele não exceda o tamanho do array
$palavras = array_slice($palavras, $numeroPalavras, $limite); // Retorna as palavras que em breve se unirão ao primeiro nome
} else {
$palavras = []; // Apenas o primeiro nome se $numeroPalavras for 0
}
// Junta o primeiro nome com as palavras extras e retorna
return trim($primeiroNome . ' ' . implode(' ', $palavras));
}
// Exemplos de uso
echo reduzirNome("Maria Clara da Silva", 2); // Maria Clara da
echo "\n";
echo reduzirNome("Maria Clara da Silva", -2); // Maria da Silva
echo "\n";
echo reduzirNome("Maria", 2); // Maria
echo "\n";
echo reduzirNome("João Pedro", 0); // João
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).