Hola!
Lo que quiero es que cuando el usuario meta un código fuente como éste:
<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
Hay dos formas..
1. la básica:
<?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 :-[
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?
<?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.
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
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
$regexp = '/<title>(.*?)<\/title>/';
XD
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
En este caso regexp solo quiere decir "regular expresion". Tienes varias funciones que te permitiran usar esa expresión regular, entre ellas preg_match.
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