Cita:
Iniciado por enlinea777
Mas facil no puedo entregartelo ("si puedo pero no quiero")
Código PHP:
<?php
$Texto="<h1>Energía solar termica</h1>
<p>La energía solar térmica (o energía termosolar) consiste en el aprovechamiento de la energía del Sol para producir calor que puede aprovecharse para cocinar alimentos o para la producción de agua caliente destinada.....</p>
<h2>Energía solar térmica de baja temperatura</h2>
<p>Una instalación solar térmica de baja temperatura está formada por captadores solares, un circuito primario y secundario, intercambiador de calor....</p>
<h2>Energía solar térmica de media temperatura</h2>
<p>Las instalaciones de temperatura media pueden usar varias diseños, los diseños más comunes son: glicol a presión, drenaje trasero, sistemas de lote y sistemas....</p>
<h1>Energía solar fotovoltaica</h1>
<p>La energía solar fotovoltaica consiste en la obtención de electricidad24 obtenida directamente a partir de la radiación solar mediante....</p>
<h2>Paneles solares fotovoltaicos</h2>
<p>Un panel fotovoltaico consiste en una asociación de células, encapsulada en dos capas de EVA (etileno-vinilo-acetato), entre una lámina frontal de vidrio y una capa....</p>";
function extraer_si_hay($Texto){
$expresion="/\<h.\>(.*)\<\/h.\>/"; // esto quire decir lo que este entre <h*> y </h*>
preg_match_all($expresion,$Texto,$considencias);
$text=$considencias[1]; //esto se convierte en un array con las considencias
if(trim($text[0])!=""){
return array(true,$considencias);
}else{
return array(false);
}
}
$textos=explode("\n",$Texto);
foreach( $textos as $linea){
$resultado=extraer_si_hay($linea);
if($resultado[0]){
$titulos[]=array("typo"=>substr($resultado[1][0][0],1,2),"texto"=>$resultado[1][1][0]);
}
}
print_r($titulos);
?>
el resultado de esto es
Código PHP:
Array
(
[0] => Array
(
[typo] => h1
[texto] => EnergÃ*a solar termica
)
[1] => Array
(
[typo] => h2
[texto] => EnergÃ*a solar térmica de baja temperatura
)
[2] => Array
(
[typo] => h2
[texto] => EnergÃ*a solar térmica de media temperatura
)
[3] => Array
(
[typo] => h1
[texto] => EnergÃ*a solar fotovoltaica
)
[4] => Array
(
[typo] => h2
[texto] => Paneles solares fotovoltaicos
)
)
Un millón de gracias!
Es mas que suficiente! con esto he conseguido hacer justo lo que quería
He tardado aproximadamente 1 hora en entender el código! y aun asi alguna parte no he terminado de verla clara del todo... pero funciona perfectamente :)
No es que dude de mis capacidades jeje, pero creo que por mi cuenta no hubiese dado con este algoritmo en mucho tiempo!
Dejare a continuacion como me quedo el código final... aunque a estas alturas creo que ya no aporta mucho, quizas venga bien a algún otro lector:
articulos.php
Código PHP:
Ver original$Texto = $txt[0];
$textos=explode("\n",$Texto); //array (textos) que contiene en cada valor del array, el texto separado por saltos de linea. foreach( $textos as $linea){ //recorro valor a valor el array creado arriba
$resultado=extraer_si_hay($linea);
if($resultado[0]){
$titulos[]=array("typo"=>substr($resultado[1][0][0],1,2),"texto"=>$resultado[1][1][0]); }
}
//print_r($titulos[2]["texto"]);
$contenidoTotal = count($titulos);
if($contenidoTotal>=1) {
echo "<h2>".$indiceContenido[$_SESSION['lang']]."</h2>
<nav id='secondary-navigation'>
<ul>
";
for($auxTitulos=0;$auxTitulos<$contenidoTotal;$auxTitulos++) {
//echo $titulos[$auxTitulos]["texto"];
echo "<li class='".$titulos[$auxTitulos]['typo']."'><a href='#".$titulos[$auxTitulos]['texto']."'>".$titulos[$auxTitulos]['texto']."</a></li>";
}
echo "</ul>
</nav>";
}
la funcion la tengo en otro fichero de "funcionesGenerales.php" que esta en un include()
Esta esta tal y como me la dejaste:
Código PHP:
Ver originalfunction extraer_si_hay($Texto){
$expresion="/\<h.\>(.*)\<\/h.\>/"; // esto quire decir lo que este entre <h*> y </h*>
$text=$considencias[1]; //esto se convierte en un array con las considencias
return array(true,$considencias); }else{
}
}
Gracias a todos por su ayuda.
@hss, ley también tus enlaces que nunca esta de mas! no llegue a probar nada... pero me han venido bien.
Un saludo.