Foros del Web » Programando para Internet » PHP »

lectura de código html con php

Estas en el tema de lectura de código html con php en el foro de PHP en Foros del Web. Hola!! Necesito hacer un script que me dé la información de los distintos párrafos de un documento html, fuente, tamaño, texto que hay en el ...
  #1 (permalink)  
Antiguo 07/11/2009, 06:23
bombadil2100
Invitado
 
Mensajes: n/a
Puntos:
Exclamación lectura de código html con php

Hola!!

Necesito hacer un script que me dé la información de los distintos párrafos de un documento html, fuente, tamaño, texto que hay en el párrafo...

Me he liado en la parte de obtener el texto del párrafo. Por ejemplo en el siguiente párrafo quisiera obtener--> Nota: con fecha de hoy y por correo certificado enviamos positivos y fotocromos.

Cita:
<p class=MsoNormal style='margin-top:12.0pt;margin-right:0cm;margin-bottom:
12.0pt;margin-left:153.1pt;text-indent:-25.5pt'><u><span style='font-family:
"Times New Roman";mso-bidi-font-family:Arial'>Nota</span></u><span
style='font-family:"Times New Roman";mso-bidi-font-family:Arial'>: con fecha de
hoy y por correo certificado enviamos positivos y fotocromos.<o:p></o:p></span></p>
He hecho un script php para obtener ese texto:

Cita:
for($j=70;$j<=$lineas;$j++) {

if(ereg("<p",$array[$j])) {

$inicio=$j;
}
if(ereg("</p",$array[$j])) {
$final=$j;

while($inicio<$final){
$array[$inicio+1]=$array[$inicio].$array[$inicio+1];
$inicio=$inicio+1;
}


$texto[$cont_texto] = $array[$inicio];
$texto[$cont_texto] = ereg_replace("style="," ",$texto[$cont_texto]);
$texto[$cont_texto] = strtolower(ereg_replace("'mso-bidi-font-weight:normal'>","",$texto[$cont_texto]));

echo $texto[$cont_texto];

$cont_texto=$cont_texto+1;

}
}
con este script voy leyendo el contenido de cada párrafo. El problema es que al llamar a la variable me muestra el texto en pantalla con FORMATO ya que el navegador interpreta el código html.

De forma un poco chapucera le he metido un ereg_replace para quitar algunas etiquetas y que no interprete el código. Funciona, el problema ahora es que quiero limitar el texto que sale en pantalla, para que sólo salgan determinado número de caracteres.
En el ejemplo para que salga sólo las 3 primeras palabras seguidas de puntos suspensivos--> Nota: con fecha...
He probado a hacerlo con substr pero no funciona ya que interpreta el código html, así que no sé muy bien como hacerlo. Si me podeis ayudar os lo agradezco

Última edición por bombadil2100; 07/11/2009 a las 06:29
  #2 (permalink)  
Antiguo 07/11/2009, 06:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: lectura de código html con php

¿Haz tratado de quitar lo que sea html y solo obtengas el texto? Lo puedes hacer usando strip_tags. Tambien te sugiero que no uses los que empiezan con ereg estan obsoletos, si no que uses los que empienzan con preg.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/11/2009, 06:40
bombadil2100
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lectura de código html con php

Cita:
Iniciado por abimaelrc Ver Mensaje
¿Haz tratado de quitar lo que sea html y solo obtengas el texto? Lo puedes hacer usando strip_tags. Tambien te sugiero que no uses los que empiezan con ereg estan obsoletos, si no que uses los que empienzan con preg.
Hola abimaelrc,

Gracias eres un crack!!

Ahora sólo me queda dividir el texto. Sabes si lo podría hacer con una función tipo explode?
  #4 (permalink)  
Antiguo 07/11/2009, 06:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: lectura de código html con php

Pero te diste la respuesta, con explode lo puedes hacer.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 07/11/2009, 07:39
bombadil2100
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lectura de código html con php

Cita:
Iniciado por abimaelrc Ver Mensaje
Pero te diste la respuesta, con explode lo puedes hacer.
Es que todavía tengo un pequeño problema. En un párrafo como este:

Cita:
<p class=MsoNormal style='line-height:130%;tab-stops:3.0cm center 184.3pt right 375.65pt'><span
style='font-family:"Times New Roman";mso-bidi-font-family:Arial'>Papel:<span
style='mso-tab-count:1'> </span>offset modelo
Austral,<span style='mso-tab-count:2'> </span>70
x 100 de <st1:metricconverter ProductID="28 Kg" w:st="on">28 Kg</st1:metricconverter>.
la resma<o:p></o:p></span></p>
Obtengo el texto de la siguiente manera:

Papel: .................................................. ............... offset (los puntos representan espacios)

Es decir los espacios en blanco que hay entre etiquetas de código html me las coge. Como puedo hacer para evitar ese problema??

Gracias
  #6 (permalink)  
Antiguo 07/11/2009, 08:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: lectura de código html con php

Bueno primero pasa por strip_tags la variable y luego con explode divides el resto.
Código PHP:
$var "<p>algo</p><br /><a href='link.html'>algo</a>";
$var strip_tags($var);
$var explode($var);
print_r($var); 
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 07/11/2009, 08:41
bombadil2100
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lectura de código html con php

Cita:
Iniciado por abimaelrc Ver Mensaje
Bueno primero pasa por strip_tags la variable y luego con explode divides el resto.
Código PHP:
$var "<p>algo</p><br /><a href='link.html'>algo</a>";
$var strip_tags($var);
$var explode($var);
print_r($var); 
Si, gracias es así como lo tenía. Pero el problema está es que en el código html a veces hay espacios entre las etiquetas me explico:

$var = "<p>algo</p><br /><a href='link.html'>algo................</a>";

donde los puntos significan espacios en blanco, y lo único que quiero que la variable capture es el texto "algo" sin los espacios. No sé si me explico
  #8 (permalink)  
Antiguo 07/11/2009, 08:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: lectura de código html con php

Pero cuando haces el explode lo puedes hacer por los espacios,
Código PHP:
$var "<p>algo</p><br /><a href='link.html'>algo</a>"
$var strip_tags(" ",$var); 
$var explode(" ",$var); 
for(
$i=0;$i<count($var);$i++){
  if(!empty(
$var[$i])){
    echo 
$var[$i]."<br />";
  }

__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 07/11/2009, 14:56
bombadil2100
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lectura de código html con php

Gracias amigo por responder. El tema es que los espacios que hay entre dos etiquetas no me los interpreta. Por ejemplo, con este código:

Código codigo:
Ver original
  1. <p class=MsoNormal style='line-height:130%;tab-stops:3.0cm center 184.3pt right 375.65pt'><span
  2. style='font-family:"Times New Roman";mso-bidi-font-family:Arial'>Cubierta:<span
  3. style='mso-tab-count:1'>                      </span>Cartulina Ibiza,<span
  4. style='mso-tab-count:2'>                                                      </span>70
  5. x 100 de <st1:metricconverter ProductID="150 Kg" w:st="on">150 Kg</st1:metricconverter>.
  6. la resma <o:p></o:p></span></p>


entre las etiquetas <span style='mso-tab-count:2> y </span> hay una tabulación o espacios en blanco que no los consigo quitar de ninguna manera.

Así obtendría:
Código codigo:
Ver original
  1. Cubierta: .................................................    Cartulina Ibiza,  ......................................................... 70 x 100 de 150Kg (los puntos es el espaciado entre etiquetas)
  2.  
  3. Y lo que quiero es:
  4.  
  5. Cubierta: Cartulina Ibiza, 70 x 100 de 150 Kg

Alguna idea?

Última edición por bombadil2100; 07/11/2009 a las 15:01
  #10 (permalink)  
Antiguo 08/11/2009, 01:41
 
Fecha de Ingreso: septiembre-2009
Ubicación: Neuquén
Mensajes: 142
Antigüedad: 15 años, 1 mes
Puntos: 12
Respuesta: lectura de código html con php

Tambien lo que podes hacer es utilizar DOMDocument, pero pr el html que veo es muy desordenado... o sea, veo atributos sin comillas... y eso no se si te ocasionara errores... pero con DOM, vas a poder obtener el valor de cada parrafo, atributos,etc.

Saludos
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:22.