Maison développement back-end tutoriel php 用PHP&XML编制迷你搜索引擎(四)_PHP

用PHP&XML编制迷你搜索引擎(四)_PHP

Jun 01, 2016 pm 12:35 PM
echo if Level 搜索引擎 mini

[程序实例 ] 用PHP&XML编制迷你搜索引擎 

作者    来源   

时间   2000年11月30日  阅读次数   247 

版本  
-----  价值   17 

    
[投他一票] 

来源
奥索网



用PHP
&XML编制迷你搜索引擎



五、mini的搜索引擎

作了如干的铺垫
令人激动的时刻到来了。

分页等版式输出和用SQL的搜索引擎差不多
我就不加注释了。

第一段为仿sina
yahoo的按照类别查询

第二段为搜索查询部分
(其实就是把整个树遍历一遍)显示符合的

内容。



说明


"网络狂飙之谜你搜索引擎"适用于小数据量的数据索引查询根据测试当数据量超过1000条以后便不再适用相当浪费主机资源建议您超过400条记录采用mysql等数据库语言构建。希望您通过我的程序对PHP对XML的解析函数有所认识。所有范例程序欢迎大家适用如果您要将其用于自己的主页中请于我联系说明其实就是将其用于的网站的名称告知于我

sfs
(sfsz@chinese.com)



以上的所有范例请到我的主页fire
.oso.com.cn

上下载
我学PHP不到一个月也刚来oso希望文章中的错误之处大家能谅解。以后我将为大家奉献出更多的源创范例。



废话少说
尽请看来。

__________________________________________________________



xml2
.php



html>

body>

style type=text/css>

td
,p,li,input,select {font-size:12px;}

A
:link {font-size:12px;color:#00007f;}

A
:visited {font-size:12px;color:#00007f;}

A
:active {font-size:12px;color:#ff0000;}

A
:hover {font-size:12px;color:#ff0000;}

.title {font-family:Tahoma; width=420 ;font-size :16px; font-weight :bold; color :steelblue; filter:Shadow(color="LightGrey", Direction="130");}

.counter{font-family:Tahoma; color=green; font-size : 12px;}

/style>



// XML文件

$file = "demo.xml";

$pagecount = 10;



class Cweb { //网页

var $name;

var $url;

var $memo;

}



class Cwebs {

var $items = array(Cweb);

var $count = 0;

}



class Csub { //类别

var $name;

var $url;

}



class Csubs {

var $items = array(Csub);

var $count = 0;

}



function xml_parse_from_file($parser, $file)

{

if(!file_exists($file))

die("Can’t find file "$file".");





if(!($fp = @fopen($file, "r")))

die("Can’t open file "$file".");



while($data = fread($fp, 4096)) {

if(!xml_parse($parser, $data, feof($fp)))

return(false);

}



fclose($fp);

return(true);

}







function start_element($parser, $name, $attrs)

{

global $show,$level,$levelcount,$maxlevel,$hide,$lev,$num,$PHP_SELF;

global $webs,$subs;

$level += 1;

if($level>$maxlevel)$maxlevel=$level;

$levelcount[$level]+=1;



if($hide){

if($level==$lev&&$levelcount[$level]==$num)$hide=FALSE;

}else{

if($level
}





if(!$hide){

switch($name){

case "sub":

$show="sub";

break;

case "web":

$show="web";

break;

default:



break;

}



if($level==$lev+1&&$level>0){



switch($show){

case "sub":

$subs->count+=1;

$subs->items[$subs->count]->url = "$PHP_SELF?lev=$level&num=$levelcount[$level]";

break;

case "web":

$webs->count+=1;

while ( list( $key, $val ) = each( $attrs ) ) {

switch(trim($key)){

case "url" :

$webs->items[$webs->count]->url=trim($val);

break;

case "memo" :

$webs->items[$webs->count]->memo=trim($val);

break;



}

}

break;

default:



break;

}

}





}





}



function stop_element($parser, $name)

{

global $level;



$level -= 1;

}



function data($parser, $data)

{

global $level,$hide,$show,$lev,$levelcount,$num;

global $webs,$subs,$title;

if($level==$lev&&$levelcount[$level]==$num&&trim($data)!="")$title=trim($data);

if(!$hide)

if(trim($data)!=""&&($level==$lev+1&&$level>0)){

switch($show){

case "sub":

$subs->items[$subs->count]->name=trim($data);

break;

case "web":

$webs->items[$webs->count]->name=trim($data);

break;

}

}

}





//main start

global $lev,$num,$PHP_SELF;

global $title,$webs,$subs;

$level = -1;

$hide = TRUE;

$webs = new Cwebs;

$subs = new Csubs;



if($lev==""){$lev=0;$num=1;}

if($page=="")$page=0;



$parser = xml_parser_create();



xml_set_element_handler($parser, "start_element", "stop_element");

xml_set_character_data_handler($parser, "data");

xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);



$ret = xml_parse_from_file($parser, $file);

if(!$ret)

{

die(sprintf("XML error: %s at line %d",

xml_error_string(xml_get_error_code($parser)),

xml_get_current_line_number($parser)));

}



xml_parser_free($parser);





echo "

搜索首页 ";

echo "后退

".

"
";

echo "
".$title."
";

$i=0;

echo "";

while($icount){

$i+=1;

if(($i%5)==1)echo"";

echo "";

}

echo "
";

echo "".$subs->items[$i]->name."";

echo "

";



$i=$page*$pagecount;

if ($webs->count > 0){

echo "
".($page+1)."/";

echo Ceil($webs->count/$pagecount);}

echo "";

while($icount&&$i
$i+=1;

echo "";

echo "";

}

echo "
".$i." ".

$webs->items[$i]->name."
".$webs->items[$i]->memo;

echo "
";

if ($webs->count > 0){

if($page>0)echo "上一页 ";

if(($page+1)count/$pagecount))echo "下一页";

}

?>

/body>

/html>



__________________________________________________________

xml3
.php

关键字匹配采用eregi函数
功能相对简单且有些bug

如输入C
++会报错因为+是关键字这点就不如用SQL查询了。

您可以在下面的程序的基础上加以完善
我这个迷你的就

起到抛砖引玉的作用吧。



html>

body>

style type=text/css>

td
,p,li,input,select {font-size:12px;}

A
:link {font-size:12px;color:#00007f;}

A
:visited {font-size:12px;color:#00007f;}

A
:active {font-size:12px;color:#ff0000;}

A
:hover {font-size:12px;color:#ff0000;}

.title {font-family:Tahoma; width=420 ;font-size :16px; font-weight :bold; color :steelblue; filter:Shadow(color="LightGrey", Direction="130");}

.counter{font-family:Tahoma; color=green; font-size : 12px;}

/style>



// XML文件

$file = "demo.xml";

$pagecount = 10;



class Cweb { //网页

var $name;

var $url;

var $memo;

}



class Cwebs {

var $items = array(Cweb);

var $count = 0;

}



class Csub { //类别

var $name;

var $url;

}



class Csubs {

var $items = array(Csub);

var $count = 0;

}



// 解析XML文件的函数

function xml_parse_from_file($parser, $file)

{

if(!file_exists($file))

die("Can’t find file "$file".");





if(!($fp = @fopen($file, "r")))

die("Can’t open file "$file".");



while($data = fread($fp, 4096)) {

if(!xml_parse($parser, $data, feof($fp)))

return(false);

}



fclose($fp);

return(true);

}







function start_element($parser, $name, $attrs)

{

global $show,$level,$levelcount,$maxlevel,$PHP_SELF;

global $webs,$subs;

global $search,$finded;

$finded=FALSE;

$level += 1;

if($level>$maxlevel)$maxlevel=$level;

$levelcount[$level]+=1;



switch($name){

case "sub":

$show="sub";

break;

case "web":

$show="web";

break;

default:



break;

}



switch($show){

case "sub":

$subs->count+=1;

$subs->items[$subs->count]->url = "xml2.php?lev=$level&num=$levelcount[$level]";

break;

case "web":

$webs->count+=1;

while ( list( $key, $val ) = each( $attrs ) ) {

if(eregi($search,$val))$finded=TRUE;



switch(trim($key)){

case "url" :

$webs->items[$webs->count]->url=trim($val);

break;

case "memo" :

$webs->items[$webs->count]->memo=trim($val);

break;

}

}

break;

default:



break;

}



}



function stop_element($parser, $name)

{

global $level;



$level -= 1;

}



function data($parser, $data)

{

global $level,$show,$levelcount;

global $webs,$subs;

global $search,$finded;



if(trim($data)!=""){

switch($show){

case "sub":

$subs->items[$subs->count]->name=trim($data);

if(!eregi($search,$data))$subs->count-=1;

break;

case "web":

$webs->items[$webs->count]->name=trim($data);

if((!eregi($search,$data))&&(!$finded))$webs->count-=1;

break;

}

}

}





//main start

global $PHP_SELF;

global $search,$webs,$subs;

$level = -1;

$hide = TRUE;

$webs = new Cwebs;

$subs = new Csubs;



if($page=="")$page=0;

if($search=="")$search="请输入关键字";



$parser = xml_parser_create();



xml_set_element_handler($parser, "start_element", "stop_element");

xml_set_character_data_handler($parser, "data");

xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);



$ret = xml_parse_from_file($parser, $file);

if(!$ret)

{

die(sprintf("XML error: %s at line %d",

xml_error_string(xml_get_error_code($parser)),

xml_get_current_line_number($parser)));

}



xml_parser_free($parser);



// 输出



echo "

搜索首页 ";

echo "后退

";

echo "
".$search."
";

$i=0;

echo "";

while($icount){

$i+=1;

if(($i%5)==1)echo"";

echo "";

}

echo "
";

echo "".$subs->items[$i]->name."";

echo "

";



$i=$page*$pagecount;

if ($webs->count > 0){

echo "
".($page+1)."/";

echo Ceil($webs->count/$pagecount);}

echo "";

while($icount&&$i
$i+=1;

echo "";

echo "";

}

echo "
".$i." ".

$webs->items[$i]->name."
".$webs->items[$i]->memo;

echo "
";

if ($webs->count > 0){

if($page>0)echo "上一页 ";

if(($page+1)count/$pagecount))echo "下一页";

}

?>

/body>

/html>
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment écrire if en langage C pour juger plusieurs conditions Comment écrire if en langage C pour juger plusieurs conditions Mar 25, 2024 pm 03:24 PM

En langage C, l'instruction if est généralement utilisée pour exécuter un bloc de code spécifique basé sur une seule condition. Cependant, plusieurs conditions peuvent être combinées pour effectuer une détermination à l'aide d'opérateurs logiques tels que &&, || et !. Y compris l'utilisation d'un ET logique (&&) pour juger plusieurs conditions, l'utilisation d'un OU logique (||) pour juger au moins une condition, l'utilisation d'un NON logique (!) pour juger de la négation d'une seule condition, ainsi que l'imbrication d'instructions if et l'utilisation de parenthèses. pour clarifier la priorité.

Entrée du moteur de recherche de disque cloud Baidu Entrée du moteur de recherche de disque cloud Baidu Feb 27, 2024 pm 01:00 PM

Baidu Cloud est un logiciel qui permet aux utilisateurs de stocker de nombreux fichiers. Alors, quelle est l'entrée du moteur de recherche Baidu Cloud Disk ? Les utilisateurs peuvent saisir l'URL https://pan.baidu.com pour accéder à Baidu Cloud Disk. Ce partage de la dernière entrée du moteur de recherche Baidu Cloud Disk vous donnera une introduction détaillée. . Entrée du moteur de recherche de disque cloud Baidu 1. Site Web de recherche Qianfan : https://pan.qianfan.app Prend en charge le disque réseau : recherche globale, Alibaba, Baidu, Quark, Lanzuo, Tianyi, méthode de visualisation du disque réseau Xunlei : connexion requise, suivez l'entreprise Avantages de l'obtention du code d'activation : Le disque réseau est complet, les ressources sont nombreuses et l'interface est simple. 2. Site Internet de Maolipansou : alipansou.c

Comment changer de moteur de recherche sur iPhone et iPad Comment changer de moteur de recherche sur iPhone et iPad Apr 25, 2023 am 08:28 AM

Il est facile de changer de moteur de recherche dans Safari, Google Chrome ou d'autres navigateurs sur votre iPhone ou iPad. Ce tutoriel vous montrera comment le faire sur quatre navigateurs Web différents disponibles sur iPhone et iPad. Comment changer le moteur de recherche Safari sur iPhone ou iPad Safari est le navigateur Web par défaut sur iOS et iPadOS, mais vous n'aimerez peut-être pas le moteur de recherche. Heureusement, vous pouvez suivre ces étapes pour le modifier : Sur votre iPhone ou iPad, lancez Paramètres depuis l'écran d'accueil. Faites glisser votre doigt vers le bas et appuyez sur Safari dans la liste. Dans le menu suivant,

Développement Java : comment implémenter des fonctions de moteur de recherche et de récupération de texte intégral Développement Java : comment implémenter des fonctions de moteur de recherche et de récupération de texte intégral Sep 21, 2023 pm 01:10 PM

Développement Java : comment implémenter les fonctions de moteur de recherche et de récupération de texte intégral, des exemples de code spécifiques sont nécessaires. Les moteurs de recherche et la récupération de texte intégral sont des fonctions importantes à l'ère moderne d'Internet. Non seulement ils aident les utilisateurs à trouver rapidement ce qu’ils recherchent, mais ils offrent également une meilleure expérience utilisateur pour les sites Web et les applications. Cet article explique comment utiliser Java pour développer des moteurs de recherche et des fonctions de récupération de texte intégral, et fournit des exemples de code spécifiques. Recherche en texte intégral à l'aide de la bibliothèque Lucene Lucene est une bibliothèque de moteur de recherche en texte intégral open source, développée par ApacheSo.

Optimisation des performances du moteur de recherche PHP : le tour de magie d'Algolia Optimisation des performances du moteur de recherche PHP : le tour de magie d'Algolia Jul 23, 2023 pm 04:21 PM

Optimisation des performances des moteurs de recherche PHP : la méthode magique d'Algolia Avec le développement d'Internet et les exigences croissantes des utilisateurs en matière d'expérience de recherche, l'optimisation des performances des moteurs de recherche est devenue cruciale. Dans le monde du développement PHP, Algolia est un service de moteur de recherche puissant et facile à intégrer. Cet article présentera les utilisations magiques d'Algolia et comment optimiser les performances des moteurs de recherche PHP via Algolia. Introduction à AlgoliaAlgolia est un fournisseur de services de moteurs de recherche basé sur le modèle SaaS.

Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Jan 30, 2024 am 09:08 AM

À l'ère actuelle de développement technologique rapide, les langages de programmation poussent comme des champignons après la pluie. L'un des langages qui a beaucoup retenu l'attention est le langage Go, apprécié par de nombreux développeurs pour sa simplicité, son efficacité, sa sécurité de concurrence et d'autres fonctionnalités. Le langage Go est connu pour son écosystème solide avec de nombreux excellents projets open source. Cet article présentera cinq projets open source sélectionnés en langage Go et amènera les lecteurs à explorer le monde des projets open source en langage Go. KubernetesKubernetes est un moteur d'orchestration de conteneurs open source pour l'automatisation

Dans le domaine de la recherche par intelligence artificielle, Google et Microsoft sont en concurrence Dans le domaine de la recherche par intelligence artificielle, Google et Microsoft sont en concurrence Apr 08, 2023 am 11:31 AM

Depuis son lancement à la fin de l'année dernière, ChatGPT est considéré comme une menace majeure pour les méthodes traditionnelles de recherche d'informations. Parce qu'il est diversifié, vous pouvez répondre aux questions des gens, écrire des essais ou des poèmes, ou même écrire du code de programme. La capacité de l'IA conversationnelle à fournir des réponses cohérentes est considérée comme une menace pour le moteur de recherche de Google, qui constitue depuis des décennies la plate-forme de référence permettant aux internautes de rechercher des informations sur Internet. ChatGPT d'OpenAI peut adapter les réponses aux questions spécifiques posées par les utilisateurs, ce qui peut faire gagner du temps lors de la navigation sur les sites Web. Un rapport publié par le New York Times en décembre a révélé que le succès immédiat de ChatGPT a forcé Google à l'appeler « Code Red » et à commencer à s'attaquer à la menace que représentent les chatbots à intelligence artificielle pour son activité de moteur de recherche. selon

Go : les essentiels du développement linguistique : 5 recommandations de framework populaires Go : les essentiels du développement linguistique : 5 recommandations de framework populaires Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials : 5 recommandations de framework populaires" En tant que langage de programmation rapide et efficace, le langage Go est favorisé par de plus en plus de développeurs. Afin d'améliorer l'efficacité du développement et d'optimiser la structure du code, de nombreux développeurs choisissent d'utiliser des frameworks pour créer rapidement des applications. Dans le monde du langage Go, il existe de nombreux excellents frameworks parmi lesquels choisir. Cet article présentera 5 frameworks de langage Go populaires et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et utiliser ces frameworks. 1.GinGin est un framework Web léger avec une rapidité

See all articles