[URGENTE] Como coger el texto entre dos carácteres específicos

Iniciado por CICOLO_111234, 11 Agosto 2009, 16:53 PM

0 Miembros y 1 Visitante están viendo este tema.

CICOLO_111234

Hola!

Lo que quiero es que cuando el usuario meta un código fuente como éste:
Código (html4strict) [Seleccionar]

<html>
<title>Título de la página</title>
<body>Hola</body>
</html>


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

Saludos

WHK

Hay dos formas..

1. la básica:
Código (php) [Seleccionar]
<?php
$buffer 
'
<html>
<title>Título de la página</title>
<body>Hola</body>
</html>
'
;
$titulo explode('<title>'$buffer);
$titulo explode('</titulo>'$titulo[1]);
$titulo $titulo[0];
echo 
$titulo;
?>


2. con mi función que ya casi va a cumplir el año :-[
Código (php) [Seleccionar]
function desde_hasta($desde, $hasta, $contenido, $cantidad = false, $retornar_todo = false){
 if(eregi($desde ,$contenido)){
  $retorno = explode($desde, $contenido);
  foreach($retorno as $compara){
   $compara = explode($hasta, $compara);
if($compara = $compara[0])
$retorna[] = $compara;
unset($compara);
  }
  if($retornar_todo){
   unset($retorna[0]);
   return $retorna;
  }
  if(is_numeric($cantidad)){
   $retorno = $retorna[$cantidad];
  }else{
   $retorno = $retorna[1];
  }
  return $retorno;
 }else{
  return false;
 }
}


como funciona?
Código (php) [Seleccionar]
<?php
$buffer 
'
<html>
<title>Título de la página</title>
<body>Hola</body>
</html>
'
;
echo 
desde_hasta('<titulo>''</titulo>'$buffer);
?>

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.

CICOLO_111234

#2
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

[u]nsigned

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

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

дٳŦ٭



Con sangre andaluza :)


WHK

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

^Cloud^

En este caso regexp solo quiere decir "regular expresion". Tienes varias funciones que te permitiran usar esa expresión regular, entre ellas preg_match.
Ahora resulta que imagino mi pasado
y llevo en esta clínica cuarenta años.
Nunca jamás he pisado la calle
y el electroshock ha sido mi padre

дٳŦ٭

Cita de: 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

No, por la función que uses. Saludos


Con sangre andaluza :)