Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/03/2014, 09:40
Avatar de fbedia
fbedia
 
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Explorar cadena PHP

Buenas,

Con este texto de entrar:
Código PHP:
Ver original
  1. $texto = "<h1>Energía solar termica</h1>
  2. <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>
  3. <h2>Energía solar térmica de baja temperatura</h2>
  4. <p>Una instalación solar térmica de baja temperatura está formada por captadores solares, un circuito primario y secundario, intercambiador de calor....</p>
  5. <h2>Energía solar térmica de media temperatura</h2>
  6. <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>
  7. <h1>Energía solar fotovoltaica</h1>
  8. <p>La energía solar fotovoltaica consiste en la obtención de electricidad24 obtenida directamente a partir de la radiación solar mediante....</p>
  9. <h2>Paneles solares fotovoltaicos</h2>
  10. <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>";

Al generar el menú con el algoritmo de enlinea777, me ha quedado el siguiente html:
Código HTML:
Ver original
  1. <ul>
  2. <li class="h1"><a href='#content0'>Energía solar termica</a></li>
  3. <li class="h2"><a href='#content1'>Energía solar térmica de baja temperatura</a></li>
  4. <li class="h2"><a href='#content2'>Energía solar térmica de media temperatura</a></li>
  5. <li class="h1"><a href='#content3'>Energía solar fotovoltaica</a></li>
  6. <li class="h2"><a href='#content4'>Paneles solares fotovoltaicos</a></li>
  7. </ul>

Esto es precisamente lo que queria y ya esta conseguido.

El siguiente problema que se me planteo, es añadir a la variable $texto los referenciadores (links internos) para que cada vez que hiciese clic en una parte del menu, fuese a esa seccion.

Por si alguien lo necesita, posteo a continuacion el codigo, ya que en esta ocasion no he tenido problemas :)
(He usado preg_replace_callback... una funcion muy interesante y que no conocia. Solo habia usado su semejante preg_replace)

Pueden pegar lo siguiente directametne en http://www.compileonline.com/execute_php_online.php
Código PHP:
Ver original
  1. <?php
  2. $count = 0;
  3.  
  4. $texto = "<h1>Energía solar termica</h1>
  5. <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>
  6. <h2>Energía solar térmica de baja temperatura</h2>
  7. <p>Una instalación solar térmica de baja temperatura está formada por captadores solares, un circuito primario y secundario, intercambiador de calor....</p>
  8. <h2>Energía solar térmica de media temperatura</h2>
  9. <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>
  10. <h1>Energía solar fotovoltaica</h1>
  11. <p>La energía solar fotovoltaica consiste en la obtención de electricidad24 obtenida directamente a partir de la radiación solar mediante....</p>
  12. <h2>Paneles solares fotovoltaicos</h2>
  13. <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>";
  14.  
  15. function remplazarH($coincidencias)
  16. {
  17.   global $count;
  18.  
  19.   //links internos tipo ---> #content0 #content1, 2, 3, #contentN
  20.   return "<span id='content".$count++."'>".$coincidencias[0]."</span>";
  21. }
  22.  
  23.   "/\<h.\>(.*)\<\/h.\>/",
  24.  "remplazarH",
  25.  $texto);
  26.  
  27. ?>

Saludos
__________________
Follow me on twitter @franbedia

Última edición por fbedia; 06/03/2014 a las 09:51 Razón: errata