Bueno, he estado intentando cosas, y creo que lo he conseguido!
Si a alguien le interesa, debajo pongo el codigo. Tambien me gustaria que lo analizarais, y que lo simplificarais, si es posible, ya que uso tres bucles diferentes, y seguro que no es lo mas eficiente.
Código PHP:
function contiene(lugar){
//cogo la celda
var td = document.getElementById(lugar);
//array 'inputs' contendra el texto del codigo de cada input
var inputs=new Array();
//array 'inputs_replaced' contendra el texto del codigo de cada input reemplazado con su value correspondiente
var inputs_replaced=new Array();
//contadores para los arrays
var n_inputs=0;
var n_inputs_replaced=0;
//en code montare el string final
var code="";
//separo las etiquetas del interior de la celda en un array (en cada posicion, el codigo de una etiqueta, pero sin ">")
var codearray=td.innerHTML.split(">");
//lo recorro, y si se trata de una etiqueta input, lo añado al array de inputs (concatenadole ">", porque no lo lleva)
for (i=0; s=codearray[i]; i++){
if(s.substring(1,s.indexOf(" "))=="input"){
inputs[n_inputs]=s+">";
n_inputs++;
}
}
//recorro los inputs de la celda, y remplazo en el array de inputs el string "input" por "input value='x'", donde "x" es el valor del input de la celda
for (i=0; ele=td.getElementsByTagName('input')[i]; i++){
inputs_replaced[i]=inputs[i].replace("input ","input value='"+ele.value+"' ");
}
//Muestra tal y como esta el codigo de la celda en la pagina
alert(td.innerHTML);
//recorro otra vez el array de todas las etiquetas de la celda, para montar el string final. De nuevo, si el elemento es un input, en vez de concatenar lo que hay, concateno el input reemplazado
for (i=0; s=codearray[i]; i++){
if(s.substring(1,s.indexOf(" "))=="input"){
code+=inputs_replaced[n_inputs_replaced];
n_inputs_replaced++;
}else{
s2=s+">";
code+=s2;
}
}
//Muestro el resultado final
alert(code);
}
Bueno, lo dicho, que gracias por las aportaciones, y si se puede mejorar este codigo para que haga lo mismo, pues me lo decis, que bienvenido sera, jeje