我是PHP的新手,我正在尝试制作一个基本的搜索引擎。每次搜索之后,我想在HTML页面中显示结果摘要,其中包含所有满足查询条件的项目。每个项目摘要还应提供指向特定HTML页面的链接,其中包含有关该项目的详细信息(每个项目的页面)。例如,这与stackoverflow或google或任何其他搜索引擎非常相似。

这可以用PHP制作吗?

我发现执行此操作的唯一方法是使用摘要代码页的这种搜索自动生成HTML摘要代码(此方法有效)(对于摘要页面,我必须做类似的事情才能生成HTML页面):

<?php
function frontPagePresentation($theFirstName,$theLastName,$theUserName,$theSummary)
{

    $fileName='ShowSearch'.$theUserName.'.html';

    $theHTML="profileO".$theUserName.".html";

    $theLinkText=$theFirstName." ".$theLastName;

    $theFigureName="/NetBeansProjects/NewPhpProject/photos/".$theUserName;

    $thePos=strpos($theSummary, ' ', 200);
    $theSummary=substr($theSummary,0,$thePos);
    $theSummary=": ".$theSummary;



    //$file = fopen(,"w");

    $str1="<table border=\"0\" width=\"75%\">";

    echo $str1;

if (!($fp = fopen($fileName, 'w'))) {
    return;
}

    $str1="<table border=\"0\" width=\"75%\">";


$str2="<tr>";
$str3="<td width=\"20%\">";
$str4="<img src= $theFigureName  alt=\" \" width= \"100\">";
$str5="</td>";
$str6="<td width=\"80%\">";
$str7="<a href=  $theHTML >  $theLinkText  </a>";
$str8= $theSummary;
$str9="</td>";
$str10="</tr>";
$str11="</table>";




$len = fprintf($fp, '%s',$str1."\n");
$len = fprintf($fp, '%s',$str2."\n");
$len = fprintf($fp, '%s',$str3."\n");
$len = fprintf($fp, '%s',$str4."\n");
$len = fprintf($fp, '%s',$str5."\n");
$len = fprintf($fp, '%s',$str6."\n");
$len = fprintf($fp, '%s',$str7."\n");
$len = fprintf($fp, '%s',$str8."\n");
$len = fprintf($fp, '%s',$str9."\n");
$len = fprintf($fp, '%s',$str10."\n");
$len = fprintf($fp, '%s',$str11."\n");






}
?>


之后,我使用以下方法将此页面加载到HTML页面(将显示摘要的HTML页面)中:

$ theUser = mysql_fetch_assoc($ theUserSearch);
$ theFirstName = $ theUser ['firstname'];
$ theLastName = $ theUser ['lastname'];
$ theUserName = $ theUser ['用户名'];
$ theSummary = $ theUser ['summary'];

frontPagePresentation($ theFirstName,$ theLastName,$ theUserName,$ theSummary);

$ theHTML =“ ShowSearch”。$ theUserName。“。html”;

require($DOCUMENT_ROOT . $theHTML);


就像我说的那样,我是PHP的新手,但是这似乎并不是一个非常聪明的方法。

每次我必须生成大量摘要以及与这些摘要关联的所有主页时(由于将浏览器发送到HTML之后,我将无法再访问它们-我在客户端),并且每次搜索后都必须删除它们(与每个项目相关的摘要和HTML页面)。此外,尚不清楚如何选择正确的时间删除它(如何知道这些结果是否仍在使用?)

正确的方法是什么?

最佳答案

我认为您应该尝试学习像Codeigniter或Laravel这样的小型php框架。
基本上,它允许您“开箱即用”执行的操作是将URL映射到特定代码。

例如,您可以只用2个不同的代码部分来管理它。
第一部分可以显示搜索表单。
第二部分可以显示结果。无需生成任何HTML。如果您需要“缓存”数据,则可以使用我列出的框架来完成。

因此,总而言之,您可以使用这些框架进行以下操作:
-将url / search映射到文件search.php
-将网址/ search-result / *映射到文件search_result.php

请注意,“ *”是通配符,如果url以/ search-result /开头,它将始终调用文件“ search_result.php”。

之后,在文件“ search_result.php”中,您可以访问该通配符的值。



向您询问:为什么需要生成HTML文件,其背后的需求是什么?是为了表现吗?与他人分享结果。

(对不起,我会使用评论功能,但我的声誉还不到50岁)



编辑2:我建议您做的是尝试学习Laravel(获得“冷却器”)或代码点火器(轻量化),如果您有空的话。

第二种选择,如果您想更快地做,请学习一些有关用Apache重写URL的知识。例如,签出:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
(或在Google上搜索Apache重写教程)

您将要实现的是:
-使用/ user /获取所有存在的URL,并将其发送到您的search_user.php?stringToSearch = $ 1 php脚本
-请注意,$ 1将替换为网址的“ / user /”部分后面的任何内容
-因此,如果键入/ user / bob,则该URL基本上将为search_user.php?stringToSearch = bob(但它将是“无提示重定向”,因此用户仍将在URL中看到/ user / bob。
-然后,在您的search_user.php脚本中,您将

<?php
$stringToSearch = $_GET['stringToSearch'];
$theUser=mysql_fetch_assoc($stringToSearch);
...


这就是您的搜索引擎“详细”部分。

对于“搜索和显示”部分,创建一个新脚本(如index.php),并基本上执行您在开始时发布的内容。但是代替这一行:

$str7="<a href='$theHTML'>  $theLinkText  </a>";


用这个

$str7="<a href='http://www.yoursite.com/user/$theUserName'>  $theLinkText  </a>";


那有意义吗?

08-04 14:49