É só salvar na raiz do site que ele já reconhece automaticamente todas as pastas e subpastas. Não precisa mexer na configuração nem utilizar um banco de dados, é muito prático! :D
<?php
/**************************************************\
# siteBuusca! v1.0 #
# #
# Autor: Carlos Reche #
# E-mail: carlosreche@yahoo.com #
# #
# Por favor, mantenha os créditos =) #
# #
# Sistema de busca em páginas da web. Não é #
# necessário um banco de dados para trabalhar #
# com este script. Apenas digite o caminha da #
# raiz onde a busca deverá ocorrer, e ele irá #
# buscar em todas as subpastas automaticamente. #
# #
\**************************************************/
//////////////////////// INÍCIO DA CONFIGURAÇÃO ////////////////////////
/* LEIA ANTES DE MEXER NA CONFIGURAÇÃO!!!
-> Sempre que você for informar um diretório, informe o caminho relativo sem barras no início
ou no final. Por exemplo, imagine que seu script de busca esteja em:
"http://www.seunome.com.br/scripts/busca/busca.php", e você queira que o script interprete
como sendo a raiz da busca a mesma pasta que é a raiz do site (ou seja, a pasta que conteria
o diretório "scripts"). Então, neste caso você deveria configurar da seguinte forma:
$secao_dir[0] = "../.."
Nota: esta regra de configuração vale para este script. Ela pode não se aplicar em outros casos.
*/
// DIGITE O NOME E O CAMINHO DE CADA SEÇÃO EXISTENTE: (buscará por todos os subdiretórios automaticamente)
// Você pode incluir mais de um valor, desde que mantenha a seqüência somando 1 (um) no índice.
// Obs: para que a pasta da busca seja a mesma de onde se encontra este script, coloque apenas um ponto "."
$secao_nome[0] = "Todo o site";
$secao_dir[0] = ".";
$secao_nome[1] = "";
$secao_dir[1] = "";
$secao_nome[2] = "";
$secao_dir[2] = "";
// DIGITE O LIMITE DE EXIBIÇÃO POR PÁGINAS
$limite = 10;
// TAMANHO MÍNIMO DA PALAVRA PARA QUE A BUSCA SEJA EXECUTADA (EM CARACTERES)
$tamanho_min = 3;
// DIGITE OS DIRETÓRIOS QUE DESEJA EXCLUIR DA BUSCA
// Para adicionar novas exlusões de diretórios, copie e cole o modelo da última linha (que começa com "$exc++; ...").
// Obs: Lembre-se de NÃO colocar uma barra no início ou no final do caminho, caso contrário não excluirá o diretório
$exc=0; $excluir_dir[$exc] = "";
$exc++; $excluir_dir[$exc] = "";
$exc++; $excluir_dir[$exc] = "";
/////////////// FIM DA CONFIGURAÇÃO - NÃO ALTERE OS VALORES ABAIXO SEM SABER ///////////////
$diretorio[0] = @$secao_dir[@$_GET['secao']];
function getmicrotime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function unhtmlentities($string) {
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}
function limpa_tag_scripts($string) {
$exclui = array ("'(<\?).*?(\?>)'si", // Limpar tags PHP
"'(<%).*?(%>)'si"); // Limpar tags ASP
$substitui = array ("", "");
$string = preg_replace($exclui, $substitui, $string);
return ($string);
}
function limpa($string) {
$string = eregi_replace("%0D%0A", "+", urlencode($string)); // limpar "tecla enter"
$string = eregi_replace(" ", " ", urldecode($string)); // limpar tabulações
$exclui = array ("'<[\/\!]*?[^<>]*?>'si", // Limpar tags HTML
"'([\r\n])[\s]+'", // Limpar espaços em branco
"/ +/"); // Limpar espaços consecutivos
$substitui = array ("", "\\1", " ");
$string = preg_replace($exclui, $substitui, $string);
return (trim($string));
}
///////////////////////////////// FIM DAS FUNÇÕES /////////////////////////////////
$creditos = "<div style=\"margin-top: 30px; width: 720px; text-align: center;\">
<hr width=\"720\" align=\"center\" size=\"2\" color=\"#aaaaaa\" noshade=\"true\" />
<font style=\"font-family: verdana; font-size: 11px; color: #cc3333;\"><strong>
Desenvolvido por Carlos Reche </strong> <br />
<a href=\"mailto:carlosreche@yahoo.com\" title=\"carlosreche@yahoo.com\"><em>carlosreche@yahoo.com</em></a>
</font>\n</div>";
$busca = trim(stripslashes(@$_GET['busca']));
$busca = eregi_replace("\"", "", $busca);
$busca_quebra = explode(" ", $busca);
$achou_inicial = @$_GET['achou_inicial'];
if (!@$_GET['achou_inicial']) { $achou_inicial = "1"; }
if (!@$_GET['exibe_status']) { $_GET['exibe_status'] = "0"; }
if (!@$_GET['secao']) { $_GET['secao'] = "0"; }
?>
<html>
<head>
<title>siteBuusca! <?php
if ($busca) { echo " - Resultado da busca"; }
?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body {margin: 20px;}
body,table {color: #333333; font-family: arial; font-size: 15px;}
a:link {color: #0000cc; text-decoration: none;}
a:hover {color: #0066cc; text-decoration: none;}
a:active {color: #cc7700; text-decoration: none;}
a:visited {text-decoration: none;}
.resultado {margin-top: -5px; margin-bottom: 30px; width: 700px;}
.linha {margin-top: -5px; height: 1px; width: 720px; text-align: left; color: #cccccc;}
</style>
</head>
<body vlink="#0000cc" <?php
if (!$busca) { echo "onload=\"document.formulario.busca.focus();\""; }
?>>
<form name="formulario" method="get" action="<?php
echo $_SERVER['PHP_SELF'] . "?busca=" . @$_GET['busca'];
?>">
<div style="width: 720px; margin-bottom: 10px; text-align: center;">
<font style="font-size: 20px;"><strong>site<em>Buusca</em>!</strong></font> <br /><br /><br />
Buscar por <input type="text" name="busca" size="30" <?php
if (@$busca) { echo "value=\"" . $busca . "\" "; }
?>/>
<select name="secao">
<?php
for ($sec=0; !empty($secao_nome[$sec]) && !empty($secao_dir[$sec]); $sec++) {
echo "<option value=\"" . $sec . "\" ";
if ($_GET['secao'] == $sec) { echo "selected"; }
echo ">" . $secao_nome[$sec] . "</option>";
}
?>
</select>
<input type="submit" value="Buscar" />
<div style="margin-top: 10px; margin-left: 50px;">
<input type="checkbox" value="1" name="exibe_status" <?php
if ($_GET['exibe_status'] == "1") { echo "checked"; }
?>/>
<font style="font-size: 12px;">Exibir detalhes da busca (processo mais demorado)</font>
</div>
</div>
</form>
<?php
if ($busca) {
foreach ($busca_quebra as $teste_uma) { if (strlen($teste_uma) >= $tamanho_min) { $ok = 1; } }
if (@$ok != 1) {
echo "<div style=\"margin-left: 30px;\"><strong>Atenção!</strong><br />";
echo "A(s) palavra(s) pesquisada(s) não atinge(m) o tamanho mínimo permitido!</div>";
echo $creditos . "</body>\n</html>\n";
exit; // sai do script caso nenhuma palavra atinja o tamanho mínimo permitido
}
ini_set("memory_limit", 100000000);
// varre todos os subdiretórios
$x = count($diretorio)-1;
for ($y = "0"; isset($diretorio[$y]); $y++) {
if ($dh = @opendir($diretorio[$y])) {
while (($file = readdir($dh)) !== false) {
if (is_dir("$diretorio[$y]/$file") && ($file != ".") && ($file != "..")) {
$x++;
$diretorio[$x] = $diretorio[$y] . "/" . $file;
}
}
closedir($dh);
}
}
clearstatcache();
$tempo_i = getmicrotime();
echo "<hr size=\"2\" width=\"720\" align=\"left\" color=\"#aaaaaa\" noshade=\"true\" style=\"margin-bottom: 10px;\">";
echo "<br /><br /><br /><br /><br /><br />";
if ($_GET['exibe_status'] == "1") { echo "<br />\n\n"; }
$procurou = "0";
$achou = "0";
$achados[0] = NULL;
for ($i = 0; isset($diretorio[$i]); $i++) { // varre cada diretório encontrado
if (($dh = @opendir($diretorio[$i])) && (!in_array($diretorio[$i], $excluir_dir))) {
while (($arquivo = readdir($dh)) !== false) {
$arq_quebra = explode(".", $arquivo);
$ext = strtolower(end($arq_quebra));
// sai do laço "while" caso tenha passado do limite de exibição, otimizando o tempo no modo de busca sem detalhes
if (($_GET['exibe_status'] != "1") && ($achou > $achou_inicial + $limite)) { break; }
if (($arquivo != '.') && ($arquivo != '..') && ($ext != $arq_quebra[0]) && ($ext != false)) {
if (($ext == "htm") || ($ext == "html") || ($ext == "php") || ($ext == "php3") ||
($ext == "asp") || ($ext == "pdf") || ($ext == "txt")) {
$procurou++; // determina o número de arquivos pesquisados
$abre = file_get_contents("$diretorio[$i]/$arquivo");
$cam_quebra = explode("/", $_SERVER['PHP_SELF']); array_pop($cam_quebra); array_pop($cam_quebra);
$cam_junta = implode("/", $cam_quebra);
$caminho = "http://" . $_SERVER['HTTP_HOST'];
$caminho .= $cam_junta;
$caminho .= "/" . $diretorio[$i];
$caminho .= "/" . $arquivo;
if (!ereg("\.\./", $caminho)) { $caminho = ereg_replace("\./", "", $caminho); }
$abre = limpa_tag_scripts($abre);
if (eregi("<title>", $abre)) {
$titulo = preg_replace("'.*<title>|</title>.*'si", "", $abre);
} else {
$titulo = $caminho;
}
if (empty($titulo)) { $titulo = "(Página sem título)"; }
$abre = strip_tags($abre);
$abre = unhtmlentities($abre);
$busca_quebra = explode(" ", $busca);
foreach ($busca_quebra as $busca_uma) {
if (strlen($busca_uma) < $tamanho_min) { continue; }
if ((eregi($busca_uma, $abre) || eregi($busca_uma, $arquivo)) && !in_array("$diretorio[$i]/$arquivo", $achados)) {
// determina o número de ocorrências e cria um array para não repetir resultados
$achou++;
$achados[$achou-1] = "$diretorio[$i]/$arquivo";
// sai do laço se estiver fora do intervalo de exibição pra economizar tempo
if (($achou < $achou_inicial) || ($achou > $achou_inicial + $limite)) { continue; }
// determina até onde irá a exibição dos resultados
if (($achou >= $achou_inicial) && ($achou < $achou_inicial + $limite)) {
$texto = limpa($abre);
$tamanho = strlen($texto);
$pos = strpos(strtolower($texto), strtolower($busca_uma));
if ($pos > 100) { $texto = substr($texto, $pos-100, 300); }
else if ($pos <= 100 && $pos > 50) { $texto = substr($texto, $pos-50, 300); }
else { $texto = substr($texto, 0, 300); }
/* Alternativa: $texto = preg_replace("/(^.{0,300})(\W+.*$)/", "\${1}", $texto); */
$texto_quebra = explode(" ", $texto);
if ($pos > "0") { array_shift($texto_quebra); }
if ($tamanho > "300") { array_pop($texto_quebra); }
$texto = implode(" ", $texto_quebra);
if ($pos > "0") { $texto = "... " . $texto;}
if ($tamanho > 300) { $texto = $texto . " ..."; }
echo "<strong>" . $achou . ". <a href=\"" . $diretorio[$i] . "/" . $arquivo . "\">";
echo $titulo . "</a></strong><hr class=\"linha\">\n";
echo "<div class=\"resultado\">\n";
foreach ($busca_quebra as $destaca) {
if (strlen($destaca) < $tamanho_min) { continue; }
$texto = preg_replace("/($destaca)/si", "<b>\\1</b>", $texto);
}
echo $texto;
if (empty($texto)) { echo "(Página sem descrição)"; }
echo "<div style=\"margin-top: 3px;\"><a href=\"" . $diretorio[$i] . "/" . $arquivo . "\">";
echo $caminho . "</a></div>\n\n</div>\n\n";
} // if $achou > $limite
} // if eregi()
flush();
clearstatcache();
} // foreach
} // if ($ext)
}
flush();
clearstatcache();
} // while
flush();
clearstatcache();
closedir($dh);
}
flush();
unset($diretorio[$i]);
clearstatcache();
} // fecha laço "for"
$tempo_f = getmicrotime();
$tempo_total = number_format($tempo_f-$tempo_i, 2, ",", ".");
$anterior = $achou_inicial - $limite;
$proximo = $achou_inicial + $limite;
$url_anterior = $_SERVER['PHP_SELF'] . "?busca=" . urlencode(@$_GET['busca']) . "&achou_inicial=" . $anterior;
$url_anterior .= "&secao=" . @$_GET['secao'] . "&exibe_status=" . $_GET['exibe_status'];
$url_proximo = $_SERVER['PHP_SELF'] . "?busca=" . urlencode(@$_GET['busca']) . "&achou_inicial=" . $proximo;
$url_proximo .= "&secao=" . @$_GET['secao'] . "&exibe_status=" . $_GET['exibe_status'];
if (@$achou > "0") {
echo "\n<br />\n<div align=\"center\" style=\"width: 730px\">\n<span style=\"color: #999999;\">\n";
if ($achou_inicial > 1) { echo "<a href=\"" . $url_anterior . "\">"; }
echo "<strong><< Anterior</strong></a> | ";
if ($achou > $proximo) { echo "<a href=\"" . $url_proximo . "\">"; }
echo "<strong>Próximo >></strong></a>\n</span></div>\n\n";
}
echo $creditos;
// Início do layer
if ($_GET['exibe_status'] == "1") {
echo "\n\n<div style=\"position: absolute; top: 180px; left: 20px;\">";
} else {
echo "\n\n<div style=\"position: absolute; top: 160px; left: 20px;\">";
}
echo "<table border=\"0\" width=\"720\ cellpadding=\"0\" cellspacing=\"0\">
<tr><td valign=\"top\" width=\"430\"> ";
if ($_GET['exibe_status'] == "1") {
if (@$achou > "0") {
if (@$achou == "1") { echo "Foi encontrada <strong>" . $achou . "</strong> ocorrência "; }
else { echo "Foram encontradas <strong>" . $achou . "</strong> ocorrências "; }
echo "para o(s) termo(s) \"<strong>" . $busca . "</strong>\"</div>";
}
} else { echo " "; } // fecha if "exibe status"
if (@$achou == "0") {
echo "<br />Não houve ocorrências para o(s) termo(s) \"<strong>" . $busca . "</strong>\"";
}
echo "</td><td align=\"right\" width=\"300\">";
if ($_GET['exibe_status'] == "1") {
echo "<em>Total de " . $procurou . " arquivos pesquisados </em>";
}
echo "<br /><em>Tempo: " . $tempo_total . " segundos</em>";
echo "</td></tr>\n<tr><td colspan=\"2\" align=\"center\" style=\"padding-top: 10px;\">";
if (@$achou > "0") {
echo "\n<br />\n\n<span style=\"color: #999999;\">\n";
if ($achou_inicial > 1) { echo "<a href=\"" . $url_anterior . "\">"; }
echo "<strong><< Anterior</strong></a> | ";
if ($achou > $proximo) { echo "<a href=\"" . $url_proximo . "\">"; }
echo "<strong>Próximo >></strong></a>\n</span>\n\n</td></tr>\n</table>\n</div>\n\n";
}
} // fecha "if ($busca)"
clearstatcache();
if (!$busca) { echo $creditos; }
?>
</body>
</html>
Pergunta
Beraldo
Script postado por: Illidan
Script de Busca "Plug and Play"
É só salvar na raiz do site que ele já reconhece automaticamente todas as pastas e subpastas. Não precisa mexer na configuração nem utilizar um banco de dados, é muito prático! :D
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.