Foros del Web » Programando para Internet » PHP »

Explorar cadena PHP

Estas en el tema de Explorar cadena PHP en el foro de PHP en Foros del Web. Hola a tod@s! Tengo una pagina en PHP que obtiene un articulo de la base de datos (guardado en html) y lo muestra.... Hasta aquí ...
  #1 (permalink)  
Antiguo 05/03/2014, 02:51
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 4 meses
Puntos: 8
Explorar cadena PHP

Hola a tod@s!

Tengo una pagina en PHP que obtiene un articulo de la base de datos (guardado en html) y lo muestra.... Hasta aquí todo va bien ;)

Ahora, mi intención es crear en dicha pagina, un "Indice de contenidos" que se genere por si solo... Esto lo quiero hacer explorando el codigo html del articulo y extrallendo todos los <h1></h1>, <h2></h2>, <h3>...etc..

EJEMPLO:

En la base de datos tengo un articulo guardado de esta forma:
Código:
<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>
El ejemplo anterior, es un articulo que obtengo de la BD.
Mi intención es crear una función en PHP que recorra el articulo y que cada vez que detecte un <h1>(cadena)</h1> me devuelva la (cadena)... de esta forma podria yo crear un indice de contenidos.

¿Existe alguna funcion que ya te de esto o algo similar?
He visto la funcion explode http://www.php.net/manual/es/function.explode.php y se me ocurre mas o menos como podria hacerlo usando esta funcion... pero dudo que sea la forma mas optima de hacerlo...

Sabiendo de la experiencia de los foreros, me mantengo a la espera de sus comentarios!
Un saludo.
__________________
Follow me on twitter @franbedia
  #2 (permalink)  
Antiguo 05/03/2014, 06:56
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Explorar cadena PHP

olvidate de explode
necesitas preg_match_all()
con eso sacas lo que quieres usando expreciones regulares


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>"
;

$expresion="/\<h1\>(.*)\<\/h1\>/"// esto quire decir lo que este entre <h1> y </h1>
preg_match_all($expresion,$Texto,$considencias);
$Titulos=$considencias[1]; //esto se convierte en un array con las considencias
print_r($Titulos);
?>
Resultado: Array ( [0] => Energía solar termica [1] => Energía solar fotovoltaica )

respuesta resuelta con ayuda de http://www.compileonline.com/execute_php_online.php

Última edición por enlinea777; 05/03/2014 a las 07:03
  #3 (permalink)  
Antiguo 05/03/2014, 10:16
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 4 meses
Puntos: 8
Respuesta: Explorar cadena PHP

Gracias por la respuesta! Se aproxima mucho a lo que quiero... pero por mas y mas vueltas que le doy, no consigo hacer el algoritmo que ando buscando. Te comento:

Con la expresión que me pusiste:

Código PHP:
Ver original
  1. $expresion="/\<h1\>(.*)\<\/h1\>/"; // esto quire decir lo que este entre <h1> y </h1>
  2. preg_match_all($expresion,$Texto,$considencias);
  3. $Titulos=$considencias[1]; //esto se convierte en un array con las considencias
  4. print_r($Titulos);

Saco como bien dices todos los titulos <h1></h1>...
De igual forma, puedo sacar todos los subtítulos <h2></h2>... <h3></h3>...etc... pero al final, obtengo una serie de arrays() que luego no se como pintarlos en "cascada"... es decir; no se que <h2> va dentro de <h1> .... etc

Con el texto de ejemplo que puse, lo que quiero es obtener un menu de contenidos que quede asi:

Cita:
- Energía solar termica
-- Energía solar térmica de baja temperatura
-- Energía solar térmica de media temperatura

- Energía solar fotovoltaica
-- Paneles solares fotovoltaicos

...etc
Gracias nuevamente y un saludo.
__________________
Follow me on twitter @franbedia
  #4 (permalink)  
Antiguo 05/03/2014, 10:30
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Explorar cadena PHP

¿Tiene q ser sí o sí en php?

Veo más cómodo usar jQuery para esto xD

http://stackoverflow.com/questions/5...6-using-jquery

Ahí tendrias la forma ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 05/03/2014, 11:00
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Explorar cadena PHP

Para procesarlo es mas comodo PHP que jquery y que me imagino lo guardara en una base l algo similar
  #6 (permalink)  
Antiguo 05/03/2014, 11:35
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Explorar cadena PHP

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
        
)


  #7 (permalink)  
Antiguo 05/03/2014, 17:15
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Explorar cadena PHP

Cita:
Iniciado por fbedia Ver Mensaje
Gracias por la respuesta! Se aproxima mucho a lo que quiero... pero por mas y mas vueltas que le doy, no consigo hacer el algoritmo que ando buscando. Te comento:

Con la expresión que me pusiste:

Código PHP:
Ver original
  1. $expresion="/\<h1\>(.*)\<\/h1\>/"; // esto quire decir lo que este entre <h1> y </h1>
  2. preg_match_all($expresion,$Texto,$considencias);
  3. $Titulos=$considencias[1]; //esto se convierte en un array con las considencias
  4. print_r($Titulos);

Saco como bien dices todos los titulos <h1></h1>...
De igual forma, puedo sacar todos los subtítulos <h2></h2>... <h3></h3>...etc... pero al final, obtengo una serie de arrays() que luego no se como pintarlos en "cascada"... es decir; no se que <h2> va dentro de <h1> .... etc

Gracias nuevamente y un saludo.
Es normal que no puedas, las expresiones regulares por si solas no pueden hacer lo que esperas.
Necesitas un parser para lo que deseas hacer, te dejo algunas alternativas:
http://www.php.net/manual/en/class.domdocument.php
https://code.google.com/p/ganon/
http://sourceforge.net/projects/simplehtmldom/files/
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 06/03/2014, 05:50
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 4 meses
Puntos: 8
Respuesta: Explorar cadena PHP

Cita:
Iniciado por enlinea777 Ver Mensaje
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
  1. $Texto = $txt[0];
  2.            
  3.             $textos=explode("\n",$Texto); //array (textos) que contiene en cada valor del array, el texto separado por saltos de linea.
  4.             foreach( $textos as $linea){ //recorro valor a valor el array creado arriba
  5.               $resultado=extraer_si_hay($linea);
  6.               if($resultado[0]){
  7.                 $titulos[]=array("typo"=>substr($resultado[1][0][0],1,2),"texto"=>$resultado[1][1][0]);
  8.               }
  9.             }
  10.             //print_r($titulos[2]["texto"]);
  11.             $contenidoTotal = count($titulos);
  12.            
  13.             if($contenidoTotal>=1) {
  14.                 echo "<h2>".$indiceContenido[$_SESSION['lang']]."</h2>
  15.                 <nav id='secondary-navigation'>
  16.                     <ul>
  17.                 ";
  18.            
  19.                 for($auxTitulos=0;$auxTitulos<$contenidoTotal;$auxTitulos++) {
  20.                     //echo $titulos[$auxTitulos]["texto"];
  21.                     echo "<li class='".$titulos[$auxTitulos]['typo']."'><a href='#".$titulos[$auxTitulos]['texto']."'>".$titulos[$auxTitulos]['texto']."</a></li>";
  22.                 }
  23.                
  24.                 echo "</ul>
  25.                 </nav>";
  26.             }

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 original
  1. function extraer_si_hay($Texto){
  2.     $expresion="/\<h.\>(.*)\<\/h.\>/"; // esto quire decir lo que este entre <h*> y </h*>
  3.     preg_match_all($expresion,$Texto,$considencias);
  4.     $text=$considencias[1]; //esto se convierte en un array con las considencias
  5.     if(trim($text[0])!=""){
  6.         return array(true,$considencias);
  7.     }else{
  8.         return array(false);
  9.     }
  10. }

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.
__________________
Follow me on twitter @franbedia
  #9 (permalink)  
Antiguo 06/03/2014, 06:45
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Explorar cadena PHP

Cita:
Iniciado por hhs Ver Mensaje
Es normal que no puedas, las expresiones regulares por si solas no pueden hacer lo que esperas.
Necesitas un parser para lo que deseas hacer, te dejo algunas alternativas:
http://www.php.net/manual/en/class.domdocument.php
https://code.google.com/p/ganon/
http://sourceforge.net/projects/simplehtmldom/files/
Estimado hhs los parser's se balen de codigos con expreciones regulares para hacer su trabajo si no lo sabias, claro esta que para el usuario promedio le es dificil entender las expreciones regulares por eso se inventan ese tipo de cosas, y bueno para proyectos grandes es mas facil el parser que crear una exprecion por cada necesidad.

Para los que lleguen despues, les dejo el codigo explicado

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); // hace las comparaciones
  
$text=$considencias[1]; //esto se convierte en un array con las considencias
 
if(trim($text[0])!=""){ // consulto la primera y en este caso la unica concidencia
  
return array(true,$considencias); // devuelvo un areglo con valor 0=true y 1=todala info extraida por las considencias de las etiquetas header
  
}else{
    return array(
false);// si no saco nada devuelvo falso
  
}
}
$textos=explode("\n",$Texto); //separo por lineas en este caso funciona por que las etiquetas <h1>,<h2>,<h3>, etc... son de una sola linea

foreach( $textos as $linea){ // recorro linea a linea
  
$resultado=extraer_si_hay($linea); // ejecuto la funcion anterior mandando la linea
  
if($resultado[0]){ //reviso el resultado del areglo en el valor 0 que debe ser verdadero o falso
    
$titulos[]=array("typo"=>substr($resultado[1][0][0],1,2),"texto"=>$resultado[1][1][0]);// Genero un nuevo arreglo extrayendo el tipo e etiqueta h1,h2,h3, etc. y e texto de ella.
  
}
}
print_r($titulos); //Imprimo los resultados
?>
  #10 (permalink)  
Antiguo 06/03/2014, 09:40
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 14 años, 4 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
  #11 (permalink)  
Antiguo 06/03/2014, 12:46
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Explorar cadena PHP

Cita:
Estimado hhs los parser's se balen de codigos con expreciones regulares para hacer su trabajo si no lo sabias
Estimado enlinea777 en ningún momento dije que no se valieran de expresiones regulares. Solo dije que, las expresiones regulares no pueden manejar por si mismas lenguajes libres de contexto como el html. Ahora un parser puede usar expresiones regulares por que en términos generales y sin entrara en detalles son un subconjunto de un lenguaje libre de contexto, y sus usos son distintos.

Cita:
claro esta que para el usuario promedio le es dificil entender las expreciones regulares por eso se inventan ese tipo de cosas, y bueno para proyectos grandes es mas facil el parser que crear una exprecion por cada necesidad.
No, la razón por las que se escribe un parser es para analizar estructuras que son proporcionadas por una gramática. y su aplicación es muy amplia.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: cadena, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:27.