Ir para conteúdo
Fórum Script Brasil
  • 0

Podem Me Ajudar A Entender Este Código?


dammy

Pergunta

Estou usando um script pronto para busca interna e está funcionando certinho, só que retorna o endereço completo com o nome do arquivo em que a palavra foi encontrada.

Vocês podem me explicar por que o código abaixo não está retornando o título da página?

(Quero que a busca seja efetuada na página inteira e, ao ser encontrada a palavra, retorne o titulo da página)

function s_print_title_desc($file_n) {

$file = @file($file_n);

if ($file) {

$line_complete = implode('', $file);

eregi("<title>(.*)</title>", $line_complete, $out);

$title = trim($out[1]);

if(isset($title)&&strlen($title)>0) $line_complete = str_replace($title, "", $line_complete);

$line_complete = strip_tags($line_complete);

$line_complete = trim($line_complete);

$line_complete = trim(substr($line_complete, 0, 400));

echo "<li><b><a href=\"$file\">";

if (isset($title)&&strlen($title)>0)

echo "$title</a></b> <font size=\"-1\">- <i>$file</i></font>";

else

echo "$file</a></b>";

echo "<br>$line_complete\n<br>&nbsp;";

}

else {

echo "<li><a href=\"$file_n\"><b>$file_n</b></a><br>";

}

}

Com esta parte do código dá pra vocês me orientarem sobre qual alteração fazer? Ou tenho que postar tudo? é que é um pouco grande...

Preciso, pelo menos, entender o código acima, já pesquisei no manual, mas não consegui entender muito bem.

Qual a razão desse if ($file)????

$file e $file_n não deveriam ser iguais???

Obrigada.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Poxa, pessoal, muito obrigada pela atenção. :)

Estou precisando muito resolver isso.

Então... eu já conferi as funções no manual php.net, mas estou tendo dificuldade para entender como funciona o código acima. Faz parte de uma busca interna nas páginas do site.

O $title e o $file não estão retornando nada, apenas o $file_n retorna o link para a página.

Tem como alterar esse código para que pegue o título da página que tem a palavra procurada?

O <title> está colocado logo após o <head> em todas as páginas, cada página tem um nome (title).

Segue abaixo o código, ainda não é completo, tirei só a parte que se refere à instalação, porque é grande demais, espero não ter apagado alguma cisa relevante... mas acho que não...

<html>

<head>

</head>

<body>

<?php

// Variables

// Set your username and password. Leave blank if you don't want any protection.

$user = "123";

$pass = "123";

// The full system path to the files you wish to index. DO NOT include trailing slash.

$file_root = "/home/site/";

// The URL equivilent of the above. DO NOT include trailing slash.

$http_root = "http://www.site.com.br/site/";

// The full system path to the index file.

$index_file = "/home/site/search/search_index.dat";

// Set to true if you wish the time taken to be displayed when searching, false otherwise:

$show_time_search = true;

// Displays time taken when indexing if true:

$show_time_index = true;

// The array file file extentions to index. The extentions must be readable (no exe, jpg, gif)

$include_extentions = array('html','htm','shtml','shtm', 'php', 'php3', 'phtml', 'php4', 'txt',);

// Message variables:

$err_no_results = "Nenhum resultado foi encontrado.";

// Sets start time.

$timeparts = explode(" ",microtime());

$starttime = $timeparts[1].substr($timeparts[0],1);

if (isset($query)) s_control($query);

elseif (substr($QUERY_STRING,0,5) == "index") i_control();

else s_print_search_form("");

//c_print_footer();

function s_control($que) {

$orig = $que;

$result_arr = s_search($que);

$result_count = sizeof($result_arr);

if ($result_count < 1) {

echo "<br><br><h4 align=\"center\">$GLOBALS[err_no_results]</h4>";

// s_print_search_form($que);

}

else {

// s_print_search_form($orig);

echo "

<h1>Resultados da Busca</h1>

<h3><i>Resultados: 1 - $result_count de \"$orig\"</i></h3>

<ul>";

foreach ($result_arr as $result)

s_print_title_desc($result);

echo "</ul>";

}

}

function s_search($query) {

// Searches for query in the index file.

$query = trim(strtolower(c_strip_chars($query)));

$search_data = @file($GLOBALS[index_file]) or die("<h4 align=\"center\">$GLOBALS[err_no_search_db]</h4>");

$pages_found = " ";

foreach ($search_data as $search_page) {

$page_arr = explode("|", $search_page);

$found_count = 0;

$qry_array = split('[, ]+',trim(strtolower($query)));

foreach ($qry_array as $qry) {

if (in_array($qry, $page_arr)) {

++$found_count;

$pages_found .= $page_arr[0] . " ";

}

}

if ($found_count == count($qry_array)) $result_arr[] = $page_arr[0];

}

return $result_arr;

}

function s_print_title_desc($file_n) {

$file = @file($file_n);

if ($file) {

$line_complete = implode('', $file);

eregi("<title>(.*)</title>", $line_complete, $out);

$title = trim($out[1]);

if(isset($title)&&strlen($title)>0) $line_complete = str_replace($title, "", $line_complete);

$line_complete = strip_tags($line_complete);

$line_complete = trim($line_complete);

$line_complete = trim(substr($line_complete, 0, 400));

echo "<li><b><a target=\"principal\" href=\"$file\">";

if (isset($title)&&strlen($title)>0)

echo "$title</a></b> <font size=\"-1\">- <i>$file</i></font>";

else

echo "$file</a></b>";

echo "<br>$line_complete\n<br>&nbsp;";

}

else {

echo "<li><a href=\"$file_n\"><b>$file_n</b></a><br>";

}

}

function s_print_search_form($query) {

?>

<div align="center"><form method="post" target="principal" >

<h4>Buscar:</h4>

<input type="text" name="query" value="<?php echo $query ?>">

<br><input type="submit" value="Buscar">

</form></div>

<?php

}

function i_get_files($dirname) {

// Navigates through the directories recurrsively and retrieves a listing in an array.

if($dirname[strlen($dirname)-1] != "/") $dirname.="/";

static $result_array = array();

$mode = fileperms($dirname);

if(($mode & 0x4000) == 0x4000 && ($mode & 0x00004) == 0x00004) {

chdir($dirname);

$handle = @opendir($dirname);

}

if(isset($handle)) {

while ($file = readdir($handle)) {

if($file=='.'||$file=='..') continue;

if(is_dir($dirname.$file)) i_get_files($dirname.$file.'/');

else $result_array[] = $dirname.$file;

}

closedir($handle);

}

return $result_array;

}

// Display time taken.

if(isset($query)) {

if($show_time_search) {

$timeparts = explode(" ",microtime());

$total_time = ($timeparts[1].substr($timeparts[0],1)) - $starttime;

echo "<br><center><font size=\"0\"><i>em: ".substr($total_time,0,4)." segs.</i></font><br></center>";

}

}

elseif (substr($QUERY_STRING,0,5) == "index") {

if($show_time_index) {

$timeparts = explode(" ",microtime());

$total_time = ($timeparts[1].substr($timeparts[0],1)) - $starttime;

echo "<br><center><font size=\"0\"><i>em: ".substr($total_time,0,4)." segs.</i></font><br></center>";

}

}

?>

</body>

</html>

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...