用PHP&XML编制迷你搜索引擎(四)_PHP
作者 来源
时间 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 "
$i=0;
echo "
"; echo "".$subs->items[$i]->name.""; echo " | ";
";
$i=$page*$pagecount;
if ($webs->count > 0){
echo "
echo Ceil($webs->count/$pagecount);}
echo "
".$i." | ". $webs->items[$i]->name." |
".$webs->items[$i]->memo; echo " |
if ($webs->count > 0){
if($page>0)echo "上一页 ";
if(($page+1)
}
?>
/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 "
$i=0;
echo "
"; echo "".$subs->items[$i]->name.""; echo " | ";
";
$i=$page*$pagecount;
if ($webs->count > 0){
echo "
echo Ceil($webs->count/$pagecount);}
echo "
".$i." | ". $webs->items[$i]->name." |
".$webs->items[$i]->memo; echo " |
if ($webs->count > 0){
if($page>0)echo "上一页 ";
if(($page+1)
}
?>
/body>
/html>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In der C-Sprache wird die if-Anweisung normalerweise verwendet, um einen bestimmten Codeblock basierend auf einer einzelnen Bedingung auszuführen. Es können jedoch mehrere Bedingungen kombiniert werden, um mithilfe logischer Operatoren wie &&, || und ! eine Entscheidung zu treffen. Einschließlich der Verwendung von logischem UND (&&) zur Beurteilung mehrerer Bedingungen, der Verwendung von logischem ODER (||) zur Beurteilung mindestens einer Bedingung, der Verwendung von logischem NICHT (!) zur Beurteilung der Negation einer einzelnen Bedingung sowie der Verschachtelung von if-Anweisungen und der Verwendung von Klammern um die Priorität zu klären.

Baidu Cloud ist eine Software, die es Benutzern ermöglicht, viele Dateien zu speichern. Was ist also der Zugang zur Baidu Cloud Disk-Suchmaschine? Benutzer können die URL https://pan.baidu.com eingeben, um den neuesten Zugang zur Baidu Cloud Disk-Suchmaschine zu erhalten. Im Folgenden finden Sie eine detaillierte Einführung. . Einstieg in die Baidu-Cloud-Disk-Suchmaschine 1. Qianfan-Suchwebsite: https://pan.qianfan.app Unterstützt Netzwerkdatenträger: aggregierte Suche, Alibaba, Baidu, Quark, Lanzuo, Tianyi, Xunlei Netzwerkdatenträger-Anzeigemethode: Anmeldung erforderlich, folgen Sie dem Unternehmen Vorteile des Erwerbs des Aktivierungscodes: Die Netzwerkfestplatte ist umfassend, es gibt viele Ressourcen und die Schnittstelle ist einfach. 2. Maolipansou-Website: alipansou.c

Es ist ganz einfach, die Suchmaschine in Safari, Google Chrome oder anderen Browsern auf Ihrem iPhone oder iPad zu ändern. Dieses Tutorial zeigt Ihnen, wie Sie dies in vier verschiedenen Webbrowsern tun, die auf iPhone und iPad verfügbar sind. So ändern Sie die Safari-Suchmaschine auf dem iPhone oder iPad Safari ist der Standard-Webbrowser auf iOS und iPadOS, aber die Suchmaschine gefällt Ihnen möglicherweise nicht. Glücklicherweise können Sie dies mit den folgenden Schritten ändern: Starten Sie auf Ihrem iPhone oder iPad die Einstellungen auf dem Startbildschirm. Wischen Sie nach unten und tippen Sie in der Liste auf Safari. Im nächsten Menü

Java-Entwicklung: Für die Implementierung von Suchmaschinen- und Volltext-Retrieval-Funktionen sind spezifische Codebeispiele erforderlich. Suchmaschinen und Volltext-Retrieval sind wichtige Funktionen im modernen Internetzeitalter. Sie helfen Benutzern nicht nur dabei, schnell zu finden, was sie suchen, sondern sorgen auch für ein besseres Benutzererlebnis für Websites und Apps. In diesem Artikel wird die Verwendung von Java zur Entwicklung von Suchmaschinen und Volltextabruffunktionen vorgestellt und einige spezifische Codebeispiele bereitgestellt. Volltextsuche mit der Lucene-Bibliothek Lucene ist eine Open-Source-Volltextsuchmaschinenbibliothek, die von ApacheSo entwickelt wurde

Optimierung der Suchmaschinenleistung mit PHP: Algolias magischer Weg Mit der Entwicklung des Internets und den steigenden Anforderungen der Benutzer an das Sucherlebnis ist die Optimierung der Suchmaschinenleistung von entscheidender Bedeutung geworden. In der Welt der PHP-Entwicklung ist Algolia ein leistungsstarker und einfach zu integrierender Suchmaschinendienst. In diesem Artikel werden die magischen Einsatzmöglichkeiten von Algolia vorgestellt und erläutert, wie Sie die Leistung von PHP-Suchmaschinen mithilfe von Algolia optimieren können. Einführung in AlgoliaAlgolia ist ein Suchmaschinendienstleister, der auf dem SaaS-Modell basiert.

Im heutigen Zeitalter der rasanten technologischen Entwicklung schießen Programmiersprachen wie Pilze nach einem Regenschauer aus dem Boden. Eine der Sprachen, die viel Aufmerksamkeit erregt hat, ist die Go-Sprache, die von vielen Entwicklern wegen ihrer Einfachheit, Effizienz, Parallelitätssicherheit und anderen Funktionen geliebt wird. Die Go-Sprache ist für ihr starkes Ökosystem mit vielen hervorragenden Open-Source-Projekten bekannt. In diesem Artikel werden fünf ausgewählte Open-Source-Projekte für die Go-Sprache vorgestellt und der Leser soll die Welt der Open-Source-Projekte für die Go-Sprache erkunden. KubernetesKubernetes ist eine Open-Source-Container-Orchestrierungs-Engine für die Automatisierung

Seit seiner Einführung Ende letzten Jahres gilt ChatGPT als große Bedrohung für traditionelle Methoden der Informationssuche. Da es vielfältig ist, können Sie Fragen anderer beantworten, Aufsätze oder Gedichte schreiben oder sogar Programmcode schreiben. Die Fähigkeit der Konversations-KI, kohärente Antworten zu liefern, wird als Bedrohung für die Suchmaschine Google angesehen, die seit Jahrzehnten die Benchmark-Plattform für die Suche nach Informationen im Internet ist. ChatGPT von OpenAI kann Antworten auf spezifische Fragen von Benutzern zuschneiden, wodurch Zeit beim Surfen auf Websites gespart werden kann. Ein im Dezember veröffentlichter Bericht der New York Times enthüllte, dass der über Nacht große Erfolg von ChatGPT Google dazu zwang, es „Code Red“ zu nennen und damit zu beginnen, sich mit der Bedrohung zu befassen, die Chatbots mit künstlicher Intelligenz für sein Suchmaschinengeschäft darstellen. entsprechend

„Grundlagen der Go-Sprachentwicklung: 5 beliebte Framework-Empfehlungen“ Als schnelle und effiziente Programmiersprache wird die Go-Sprache von immer mehr Entwicklern bevorzugt. Um die Entwicklungseffizienz zu verbessern und die Codestruktur zu optimieren, entscheiden sich viele Entwickler für die Verwendung von Frameworks, um Anwendungen schnell zu erstellen. In der Welt der Go-Sprache stehen viele hervorragende Frameworks zur Auswahl. In diesem Artikel werden fünf beliebte Go-Sprach-Frameworks vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, diese Frameworks besser zu verstehen und zu verwenden. 1.GinGin ist ein leichtes Web-Framework mit hoher Geschwindigkeit
