Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho um arquivo chamado teste.htm no meu diretório root, seu código fonte é o seguinte:
>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml%22)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Teste</title>
<meta name="author" content="Dinho">,
</head>
<body>
</body>
</html>
Eu queria saber como eu faço para pegar apenas o titulo que está entre **<title></title>** no caso acima **"Teste"** e jogar pra uma variavél com php.Já tentei usar **get_meta_tags()**, porem essa função só pega o que está dentro das tags meta do código htm(l), no caso acima o autor da pagina **"Dinho"**.
Alguem sabe como eu posso resolver isso?
Obrigado pela atenção
Amigão eu não consegui fazer nada com sua dica, desculpe minha burrice, rsrsrs.
O caso é um seguinte, eu tenho um script que lista os arquivos de um diretório (segue abaixo o script), no meu caso o diretório Artigo, e eu o preparei para só listar o arquivos html e htm, preparei uma página de teste (código lá em cima), com as tags <title>Teste</title> e <meta name="author" content="Dinho">, você poderá ver no código abaixo se você testá-lo que ele abre o arquivo e procura com get_meta_tags() as tags citadas dentro do arquivo Teste.htm que está na pasta Artigo(Artigo/Teste.htm), porem essa função só pega não pega o <meta name="author" content="Dinho">, sua saida é:
Título:
Autor:Dinho
Ou seja o Autor da pagina a função reconhece e imprime corretamente, porem o titulo não.
Se você puder me mostrar como fazer com esse escript para reconhecer e imprimir o titulo da página, ex:
Título: Teste
Autor:Dinho
Eu agradeceria de mais.
>
<?php
$diretorio = "Artigo/";
// abre o diretório
$ponteiro = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}
// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
if ($listar!="." && $listar!=".."){
// checa se o tipo de arquivo encontrado é uma pasta
if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
$pastas[]=$listar;
} else{
// caso FALSO adiciona o item à variável de arquivos
$arquivos[]=$listar;
}
}
}
/ AQUI EU COMENTEI ESTA PARTE PORQUE EU SÓ QUERO QUE LISTE OS ARQUIVO /
// lista as pastas se houverem
/* if ($pastas != "") {
foreach($pastas as $listar){
if ($listar != "") {
//print " <a href='$listar'>$listar</a><br>";
}
}
} */
// lista os arquivos se houverem
if ($arquivos != "") {
foreach($arquivos as $listar){
//AQUI EU DEI UM explode() PARA SÓ LISTAR HTM E HTML
$lista_tuto = explode('.', $listar);
//SE O ARQUIVO FOR HTM/HTML ENTÃO ELE LISTA
if(($lista_tuto[1] == "htm") || ($lista_tuto[1] == "html")){
//AQUI A FUNÇÃO get_meta_tags() PARA PEGAR AS TAGS META EX: <meta name="author" content="Dinho">
$pega_tags = get_meta_tags($diretorio.$listar);
print "Título: <a href='$listar'>".$pega_tags['title']."</a><br>";
print "Autor:".$pega_tags['author']."<br>";
}
}
}
?>
Obrigado mais uma vez a atenção.
Olá amigo. Fis um script ae. E testa ae para ver se lhe ajuda.
Eu testei aqui em localhost e está funfando beleza.
>
<?php
$handle = fopen("[http://ultimateddl.net/Games.aspx"](http://ultimateddl.net/Games.aspx), "r");
$contents = stream_get_contents($handle);
fclose($handle);
$titulo = explode("<title>", $contents);
$titulo_go = explode("</title>", $titulo[1]);
echo $titulo_go[0];
?>
Em $handle vocÊ coloca a url do arquivo. Exemplo: http://localhost/test.htm.
há vários soluções..
no caso que citei
<?php
// strpos obtém a posição de um caracter ou string dentro de uma string
echo strpos( '123ABC', 'A' );
//retornará 3
?>
com essa informação utilize substr() que retornará o trecho de uma string à partir de uma determinada posição até um limite.
<?php
$var = '<title>iMasters</title>';
$tag = '<title>';
$ini = strpos( $var, $tag ) + strlen( $tag );
$limit = strpos( $var, '</title>' ) + $ini;
//echo $ini; exit;
echo substr( $var, $ini, $limit );
?>>
Olá amigo. Fis um script ae. E testa ae para ver se lhe ajuda.
Eu testei aqui em localhost e está funfando beleza.
>
<?php
$handle = fopen("[http://ultimateddl.net/Games.aspx"](http://ultimateddl.net/Games.aspx), "r");
$contents = stream_get_contents($handle);
fclose($handle);
$titulo = explode("<title>", $contents);
$titulo_go = explode("</title>", $titulo[1]);
echo $titulo_go[0];
?>
Em $handle vocÊ coloca a url do arquivo. Exemplo: http://localhost/test.htm.
Meu caro williamfoose eu fiz umas pequenissimas alterações nesse script e imcorporei com o que eu já tinha e ficou assim:
>
<?php
$diretorio = "Artigo/";
// abre o diretório
$ponteiro = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}
// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
if ($listar!="." && $listar!=".."){
// checa se o tipo de arquivo encontrado é uma pasta
if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
$pastas[]=$listar;
} else{
// caso FALSO adiciona o item à variável de arquivos
$arquivos[]=$listar;
}
}
}
/ AQUI EU COMENTEI ESTA PARTE PORQUE EU SÓ QUERO QUE LISTE OS ARQUIVO /
// lista as pastas se houverem
/* if ($pastas != "") {
foreach($pastas as $listar){
if ($listar != "") {
//print " <a href='$listar'>$listar</a><br>";
}
}
} */
// lista os arquivos se houverem
if ($arquivos != "") {
foreach($arquivos as $listar){
//AQUI EU DEI UM explode() PARA SÓ LISTAR HTM E HTML
$lista_tuto = explode('.', $listar);
//SE O ARQUIVO FOR HTM/HTML ENTÃO ELE LISTA
if(($lista_tuto[1] == "htm") || ($lista_tuto[1] == "html")){
//Parte do williamfoose
$handle = fopen($diretorio.$listar, "r");
$contents = stream_get_contents($handle);
//Abaixo eu comentei porque se não o fclose() fecha a '$handle' e o loop não será feito,
//só será exibido a primeira ocorrencia de um arquivo, para esse scipt, atrapalha porque
//ele faz um loop no diretório, e mostra todos os arquivos HTM(L), e se houver mais do que um arquivo HTM(L)
//ele irá dar erro a partir do segundo já que o diretório encontra-se fechado, eu fechei o diretório no fim do script
//com @fclose($diretorio);, o "@" é para não mostar erro no browser
//fclose($handle);
$titulo = explode("<title>", $contents);
$titulo_go = explode("</title>", $titulo[1]);
//Abaixo eu comentei porque eu irei exibir o titulo em:
//print "Título: <a href='".$diretorio.$listar."'>".$titulo_go[0]."</a><br>";
//echo $titulo_go[0];
//Fim da perte do williamfoose
//AQUI A FUNÇÃO get_meta_tags() PARA PEGAR AS TAGS META EX: <meta name="author" content="Dinho">
$pega_tags = get_meta_tags($diretorio.$listar);
print "Título: <a href='".$diretorio.$listar."'>".$titulo_go[0]."</a><br>";
print "Autor:".$pega_tags['author']."<br>";
//Obs se o arquivo HTM(L) não contiver as meta tags "description" nem "keywords" simplemente imprimirá em branco
print "Descrição:".$pega_tags['description']."<br>";
print "Palavras Chave:".$pega_tags['keywords']."<br>";
}
}
}
@fclose($diretorio);
?>
Esse scipt está listando só os arquivos HTM e HTML do diretório Artigo, mas pode ser facilmente usado para listar só os diretórios, ou arquivos de outros formatos, para isso é só ler os comentários do script.Está tambem identificando e imprimindo perfeitamente tudo o que está entre <title> e </title>, e tambem identificando e imprimindo as tags META NAME
Agradeço realmente a atenção de todos e em especial do hinom e do williamfoose que resolveram minhas dúvidas.
Eu usei o script do williamfoose e deu certinho como eu pretendia, quem sabe se o hinom montasse um com a parte dele ficariam dois scripts pra galera escolher, que maravilha seria, pois, eu busquei muito na internet inclusive em outros foruns e vi que esta duvida não é só minha mas de muitas pessoas, porem como eu só postei a minha dúvida aqui já foi resolvida em menos de 24 horas. Agradeço sempre ao iMasrters por ter administradores e membros como hinom e williamfoose, que estão dispostos a ajudar.
Obrigado
Este tópico está resolvido
usando strpos('<title>') você obtém a posição de uma strings
a partir do php5 foi adiciona uma função aprimorada stripos()
http://php.net/strpos
http://php.net/stripos
pergunta:
nao poderia fazer assim ?
com isso basta substituir onde tiver "{htmlTitle}"