jquery highlight () rompiendo en tabla dinámica

Tengo un pequeño problema con una función de resaltado en la que estoy trabajando. Básicamente, cargo registros de una base de datos que coinciden con los datos del formulario actual de ciertas maneras. Luego, cuando alguien completa el formulario, si describe un problema que ya existe en mi sistema, se destacarán las palabras que su descripción tiene en común con el registro (s) existente (s). Mi problema es que la mesa se rompe. Funcionará hasta cierto punto, pero a veces rompe la parte del bucle de PHP del resto de la tabla, y luego no tiene formato, y la función de resaltado no funcionará. Para ser más específicos, una vez rotas, las etiquetas td en el cuerpo de la tabla no siguen el formato de la fila del encabezado. Condiciones que causan el efecto indeseable:

tabulación a través del área de textoSi es necesario eliminar o aplicar demasiadas clases a la vez (eliminando todas, agregando muchas palabras o eliminando o buscando un solo carácter con muchas ocurrencias)

HTML en la página principal && script para activar el resaltado

<textarea name="description" id="description"></textarea>
<script>
 var delay = (function(){
 var timer = 0;
 return function(callback, ms){
 clearTimeout (timer);
 timer = setTimeout(callback, ms);
 };
 })();
 $(function(){
    $("#description").keydown(function(){
    delay((function(){
    $("#displayer *").removeClass('highlight');
    var1 = $('textarea#description').val().split(' ');
    for (var i=0;i<var1.length;i++){
    $("#displayer *").highlight(var1[i], "highlight")};
    }),1000);
    });
    });
 </script>

el php externo que construye la tabla buscada en base a una llamada ajax es esta:

echo '<TABLE BORDER="0" CELLSPACING="5" CELLPADDING="5" id="displayer"><FONT     FACE="ARIAL">';

   echo ' <tr> '; 
echo '   <td width="20" ALIGN="LEFT" height="1">ID</td>'; 
echo '   <td width="89" ALIGN="LEFT" height="1">Date</td> '; 
echo '   <td width="200" ALIGN="LEFT" height="1" >Description</td>'; 
echo '   <td width="89" ALIGN="LEFT" height="1" >Solution</td>'; 
echo '   <td width="20" ALIGN="LEFT" height="1" >User:</td>'; 
echo '   <td ALIGN="LEFT" height="1" >Key?:</td>';
echo '   <td ALIGN="LEFT" height="1" >Part:</td>';
echo '   <td ALIGN="LEFT" height="1" >Classified As:</td>';
echo ' </tr>   '; 
 for ($i=1; $i <= $num_results; $i++)
    {
   $row = mysql_fetch_array($result1); 

     echo '<TR BGCOLOR="#EFEFEF">';
     echo '<TD width="20">';
     echo  stripslashes($row['0']) ;
     echo '</TD>';
     echo '<TD width="89" >';
     echo  $row['1'] ;
     echo '</TD>';
     echo '<TD width="200">';
     echo  stripslashes($row['6']) ;
     echo '</TD>';
     echo '<TD width="89">';
     echo  stripslashes($row['11']) ;
     echo '</TD>';
     echo '<TD  width="20">';
     echo  $row['5'] ;
     echo '</TD>';
      echo '<TD>';
      if ($row['8'] == 1)
     {echo  'Yes' ;}
     else 
     {echo 'No' ;}

     echo '</TD>';
     echo '<td>'.$row['10'].'</td>';
     echo '<td>'.$row['9'].'</td>';

     echo '</TR>';

    }
         echo '</TABLE>';

complemento de resaltado externo:

jQuery.fn.highlight = function (str, className) {
    var regex = new RegExp(str, "gi");
    return this.each(function () {
        $(this).contents().filter(function() {
            return this.nodeType == 3 && regex.test(this.nodeValue);
        }).replaceWith(function() {
            return (this.nodeValue || "").replace(regex, function(match) {
                return "<span class=\"" + className + "\">" + match + "</span>";
            });
        });
    });
};

Creo que debería agregar una prueba de vacío con algún tipo de escape, para resolver la primera condición, pero con la segunda, no estoy seguro de lo que está sucediendo. Cualquier sugerencia es definitivamente apreciada. Lo siento porque la publicación es enorme y complicada, pero quería que todos tuvieran toda la información que pudiera proporcionar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta