Prueba con preg_replace_callback() ... juega con este codigo que te hice:
Código PHP:
Ver original<?php
// Datos
$word = 'arroz';
$document = 'Arroz de la mejor marca es el arroz que vendemos en MercadIT!';
$_tag = 'b'; //<b> .. </b>
// Programa
$pattern = '/'.$word.'/i';
function reemplazos_insensibles($match)
{
global $_tag;
return "<$_tag>$match[0]</$_tag>";
}
// Resultado
echo $document;