Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: CICOLO_111234 en 11 Agosto 2009, 16:53 pm



Título: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: CICOLO_111234 en 11 Agosto 2009, 16:53 pm
Hola!

Lo que quiero es que cuando el usuario meta un código fuente como éste:
Código
  1. <title>Título de la página</title>
  2. <body>Hola</body>
  3. </html>

Se detecte automáticamente el texto que se encuentra entre <title> y </title> para adivinar el título.

Saludos


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: WHK en 11 Agosto 2009, 17:57 pm
Hay dos formas..

1. la básica:
Código
  1. <?php
  2. $buffer = '
  3. <html>
  4. <title>Título de la página</title>
  5. <body>Hola</body>
  6. </html>
  7. ';
  8. $titulo = explode('<title>', $buffer);
  9. $titulo = explode('</titulo>', $titulo[1]);
  10. $titulo = $titulo[0];
  11. echo $titulo;
  12. ?>

2. con mi función que ya casi va a cumplir el año :-[
Código
  1. function desde_hasta($desde, $hasta, $contenido, $cantidad = false, $retornar_todo = false){
  2.  if(eregi($desde ,$contenido)){
  3.   $retorno = explode($desde, $contenido);
  4.   foreach($retorno as $compara){
  5.    $compara = explode($hasta, $compara);
  6. if($compara = $compara[0])
  7. $retorna[] = $compara;
  8. unset($compara);
  9.   }
  10.   if($retornar_todo){
  11.    unset($retorna[0]);
  12.    return $retorna;
  13.   }
  14.   if(is_numeric($cantidad)){
  15.    $retorno = $retorna[$cantidad];
  16.   }else{
  17.    $retorno = $retorna[1];
  18.   }
  19.   return $retorno;
  20.  }else{
  21.   return false;
  22.  }
  23. }

como funciona?
Código
  1. <?php
  2. $buffer = '
  3. <html>
  4. <title>Título de la página</title>
  5. <body>Hola</body>
  6. </html>
  7. ';
  8. echo desde_hasta('<titulo>', '</titulo>', $buffer);
  9. ?>
las demás variables son para devolver arrays en caso que haya mas de un <title>,  lo uso generalmente para interpretar rss y archivos xml.


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: CICOLO_111234 en 11 Agosto 2009, 18:39 pm
gracias, funciona perfectamente!

Una cosa más:

también quiero hacer lo mismo con los enlaces:

<a href="pagina.html">Pagina1</a>

Quiero sacar la url (pagina.html) y me funciona, pero si  hay 2 enlaces:

<a href="pagina.html">Pagina1</a>
<a href="pagina2.html">Pagina2</a>

solo me coge la primera. Como hago para que coja los dos enlaces?

Gracias de antemano


SOLUCIONADO


Ya lo he solucionado (Es que me acabo de enterar que era un Array...  :P :P)

Gracias por responder


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: [u]nsigned en 11 Agosto 2009, 20:40 pm
Hola. Bueno me gusto mucho tu funcion WHK  :).

Pero tengo una duda y aprobecho que el post trata sobre eso...:

Tambien se podria usar SimpleXML, no?..digo, en lugar de tratar todo el doc HTML como cadenas de texto, trabajarlo como XML?

Esto es posible creo..y de ser así, sería más o menos recomendable que usar funciones 'basadas en cadenas' para trabajar sobre los TAGS HTML?, cosumiría muchos recursos del server?

Saludos  ;D


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: дٳŦ٭ en 12 Agosto 2009, 01:12 am
Código
  1. $regexp = '/<title>(.*?)<\/title>/';

XD


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: WHK en 12 Agosto 2009, 04:40 am
si no me equivoco regexp usa sensibilidad de mayusculas o no?
si es así entonces un <TITLE> no lo consideraría y un tItlE menos  :P


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: ^Cloud^ en 12 Agosto 2009, 08:20 am
En este caso regexp solo quiere decir "regular expresion". Tienes varias funciones que te permitiran usar esa expresión regular, entre ellas preg_match.


Título: Re: [URGENTE] Como coger el texto entre dos carácteres específicos
Publicado por: дٳŦ٭ en 13 Agosto 2009, 19:06 pm
si no me equivoco regexp usa sensibilidad de mayusculas o no?
si es así entonces un <TITLE> no lo consideraría y un tItlE menos  :P

No, por la función que uses. Saludos