I got it working.
This is pattern. I think you understand:
"#(.*)<!-- \[-listado_ini-\] -->(.*)<!-- \[-listado_fin-\] -->(.*)#s"
There are 3 catch: (.*) .... this is what you want.
Important: #s" at the end
We need this 's' if we have newlines in the $string (\n)
But not if you only have a string like this:
"this is some text with not any newlines"
"this is some text with one
newline"
Here is my test. It works.
<?php
$string = '
<table align="center" width="775" id="tabla_gral">
<tr class="fila_titular">
<th width="50">Id</th>
<th width="150">Nombre</th>
</tr>
<!-- [-listado_ini-] -->
<tr class="fila_contenido [-fila-]">
<td width="50" class="centro"[-editando_auxiliar-]>[-id-]</td>
<td width="150">[-nombre-]</td>
</tr>
<!-- [-listado_fin-] -->
</table>';
echo nl2br(htmlspecialchars($string))."<br /><br />";
$pattern = "#(.*)<!-- \[-listado_ini-\] -->(.*)<!-- \[-listado_fin-\] -->(.*)#s";
$listado2 = preg_replace($pattern, "$1$2$3", $string);
echo "Using preg_replace: <br />".nl2br(htmlspecialchars($listado2));
?>