Pues claro, pero perfectamente podés guardar la salida en una variable en vez de usar "echo"...
Veamos tu código original:
Código PHP:
str_ireplace($trozos,
"<span style='text-decoration: underline'>$trozos</span>",
$row_buscarproy['inv_ap2'].', '.$row_buscarproy['inv_nom']);
Esto se puede traducir como:
"reemplaza $trozos
por <span style='text-decoration: underline'>$trozos</span>
en $row_buscarproy['inv_ap2'].', '.$row_buscarproy['inv_nom']
Como $trozos es una matriz, y la cadena de reemplazo NO LO ES, cada entrada de $trozos se sustituirá por la cadena de reemplazo.
¿Por qué te muestra simplemente "Array"? porque esa es la salida cuando uno intenta imprimir una matriz sin especificar el índice que se quiere escribir. Probá
echo $trozos
para comprobarlo.
Como supongo que lo que querés es que sustituya por cada palabra encontrada, (es decir, que si encuentra "hola" sustituya por "<span.....>hola</span>"), te sugiero que hagas un foreach, pero no con $trozos sino con cada entrada:
Código PHP:
$salida = $row_buscarproy['inv_ap2'].', '.$row_buscarproy['inv_nom'];
foreach ($trozos as $trozo) {
$salida = str_ireplace($trozo,
"<span style='text-decoration: underline'>$trozo</span>", $salida);
}
echo $salida;
Por otro lado, también te sugerí cambiar
"<span style='text-decoration: underline'>$trozos</span>"
por
"<span style='text-decoration: underline'>".current($trozos)</span>"
como otra forma de solucionarlo, sin tener que usar foreach.
Saludos.