Negrito sobrenome composto (RESOLVIDO)

Boa noite!
Preciso de orientação sobre como transformar o sobrenome de uma pessoa em negrito, porem é quando o sobrenome é composto, exemplo:
nome normal:
Ronaldo Luiz Nazario de Lima
nome com sobrenome em negrito
Ronaldo Luiz Nazario de Lima

os dados que disponho no mysql estão da seguinte maneira:
tabela pessoas composta pelas colunas nome_completo e sobrenome, exemplo:
nome_completo sobrenome
Ronaldo Luiz Nazario de Lima N. Lima
Ronaldo de Assis Moreira De Assis
Roberto Carlos da Silva Rocha Da S. Rocha

estou usando a função str_replace no php para fazer essa conversão para negrito, porem se o sobrenome for composto igual os exemplos acima não funciona, fiz assim:
$nome_negrito=str_replace("$sobrenome", “$sobrenome”, $nome_completo);

alguém teria alguma sugestão de como proceder quando o sobrenome é composto

utilize array na função str_replace e encapsule com <b. e
ou

$nome_negrito=str_replace("$sobrenome", “<b>$sobrenome</b>”, $nome_completo);

não consegui compreender como ficaria o array no str_replace, poderia exemplificar

tentou a segunda opção?

Desculpe, cometi um erro de digitação quando criei a pergunta do topico, na verdade a segunda opção ja é a que estou utilizando, ou seja:

$nome_negrito=str_replace("$sobrenome", “<b>$sobrenome</b>”, $nome_completo);

so que o problema é justamente que assim não consigo colocar em negrito quando o sobrenome é composto, talvez seja por que quando é composto é separado por ponto(.) ai replace entende que é diferente

https://iwh.tec.br/scriptcase/blank_realce_sobrenome/

$nome_completo = "Ronaldo Luiz Nazario de Lima";
$sobrenome = "Nazario de Lima";

$nome_negrito=str_replace($sobrenome, "<b>$sobrenome</b>", $nome_completo);

echo $nome_negrito;

Agora se $sobrenome não estiver contido em $nome_completo, aí complica não.
Pois qual regra é aplicada para abreviar $sobrenome?

A explicação deve ser clara e bem exposta, pois o conteúdo do tópico original realmente ficou bem confuso.

Nome Completo Sobre Nome
Ronaldo Luiz Nazario de Lima N. Lima
Ronaldo de Assis Moreira De Assis
Roberto Carlos da Silva Rocha Da S. Rocha

Se o sobre nome é cadastrado a vontade do usuário, sem uma regra definida, como montar um algoritmo para detectar o sobrenome no nome completo?

No Exemplo: Ronaldo de Assis Moreira, qual o sobrenome completo correto?
A meu ver é Assis Moreira, mas em seu cadastro está: De Assis

$arr = [
	["Ronaldo Luiz Nazario de Lima","N. Lima"],
	["Ronaldo de Assis Moreira","De Assis"],
	["Roberto Carlos da Silva Rocha","Da S. Rocha"]
	];

echo "<pre>", print_r($arr,1), "</pre>";

foreach ($arr as $val) {
	echo  realceSobreNome($val[0],$val[1]),'<hr>';
}

function realceSobreNome($nomeCompleto, $sobreNome) {
    $sobreNome     = str_replace(['.','  '],' ',$sobreNome);
    $arrRevSNome  = array_reverse(explode(' ',$sobreNome));
    $arrRevNComp  = array_reverse(explode(' ',$nomeCompleto));
    $true = 0;
    foreach ($arrRevSNome as $valSNome) {
		 $valSNomeLower = strtolower($valSNome);
		 foreach ($arrRevNComp as $key => $valNComp) {
			$valNCompLower = strtolower($valNComp); 
	  		if (($valSNomeLower == $valNCompLower || substr($valNCompLower, 0, strlen(trim($valSNomeLower))) == $valSNomeLower)) {
				$true++;
				if ($true == count($arrRevSNome)) {
				    	$arrRevNComp[$key] = '<b>'. $valNComp;
				}
			}
		 }
	}
	return implode(' ',array_reverse($arrRevNComp)).'</b>';
}

https://iwh.tec.br/scriptcase/blank_realce_sobrenome/

Obs: O algoritmo que criei foi em base aos 3 nomes de exemplo com seus respectivos sobrenomes, pode não ser funcional para todos os casos.

Se a sugestão resolve seu problema, edite o título desse tópico e inclua: [RESOLVIDO]

Programação é Lógica, Lógica é Programação
Conhecimento Diminui Limitações

TAGS: HAROLDO, PHP, LÓGICA, HIGHLIGHT, WORD, PALAVRA, NOME, SOBRENOME, NEGRITO

1 Curtida

Resolvido!
Mais uma vez obrigado Haroldo pelas orientações.

2 Curtidas