tumbero_x tienes que aprender a diferenciar un array de un string, es cierto que la función str_replace se usan arrays de búsqueda y reemplazo en un string, pero tu tienes es un array de strings. Al hacer esto:
Siempre te va a dar el último elemento del array $texto3. Yo opino que la solución que te dió
cybervandal es lo correcto, agregar los resultados a un nuevo array o unirlos (.=) en un sólo string si es lo que necesitas.
Saludos.