Si, creo que voy avanzando..
Código PHP:
/* coge las tabulaciones \t y las formatea a HTML */
function lasTabulaciones($codigo2) {
$hay2=preg_match_all('/(\t){1,}((.|\s)+?)\r/i',$codigo2,$resultado2);
if(!$hay2) return $codigo2." NADA";
else {
for($j=0; $j<count($resultado2[2]); $j++) { //por cada tabulacion
$HTML2="<span style='padding-left:25px;'>".$resultado2[2][$j]."</span>";
$codigo2=str_replace($resultado2[0][$j], $HTML2, $codigo2);
}
return $codigo2;
}
}
/* se encarga de coger el [code][/code] y formatearlo */
function elCode ($codigo) {
$hay = preg_match_all ('/\\[(code)\\]((.|\s)+?)\\[\\/\\1\\]/i', $codigo, $resultado);
if (!$hay)
return $codigo;
for($i=0; $i<count($resultado[1]); $i++) { // por cada code
//$resultado[2][$i]=ereg_replace('\t(((.|\s)+)?)', "<span style='padding-left:25px;'>$1</span>" , $resultado[2][$i]); //tabulaciones
$resultado[2][$i]=lasTabulaciones($resultado[2][$i]);
$HTML = '<div class="code">'.nl2br($resultado[2][$i]).'</div>';
$codigo = str_replace ($resultado[0][$i], $HTML ,$codigo);
}
return $codigo;
}
La funcion lasTabulaciones es muy parecida a elCode, solo que lasTabulaciones se encaga de las lineas que empiezan por tabulacion y acaban en salto de linea (las identadas).
Para una tabulacion funciona bien.
Para dos tabulaciones en la misma linea..mm.. quedan omitidas a partir de la segunda.
He intentado hacer algo recursivo, pero no me ha salido nada de lo que he probado... me parece.. demasiado locura.
¿A alguien se le ocurre algo?
Lo que quiero hacer es que:
tantos "\t" como encuentre antes de "texto" lo sustituya por "<span style='padding-left:25px;'>". Despues claro, debe cerrar los span abiertos. (metiendo antes de cerrarlos el "texto". Algo complicado?