搜索一个链接在一个网站和显示它PHP


Searching for a link in a website and displaying it PHP

你好我是一个新手在PHP我试图使搜索功能使用PHP,但只有在网站内没有任何数据库

基本上如果我想搜索一个字符串也就是"Health"它会显示

<a href="foobar.html">The Joys of Health</a>
<a href="foobar2.html">Healthy Diets</a>

这个片段是我唯一能找到的东西,如果正确编码将输出我想要的"行"

$myPage = array("directory.php","pages.php");
$lines = file($myPage[n]);
echo $lines[n]; 

我还没有尝试过,如果它会工作,但在我做之前,我想问是否有更好的方法来做到这一点?如果我的文件有太多行,它会给服务器带来压力吗?

file()函数将返回一个数组。您应该使用file_get_contents(),因为它返回一个字符串。

然后,使用正则表达式查找链接中的特定文本

你的目标是好的,但你正在考虑的方法不是。file()函数逐行读取文件,并将其插入数组中。这假定HTML以人类可读的方式结构良好,但情况并非总是如此。然而,如果你是提供HTML的人,并且你确保结构是完美定义的,好吧……下面是你提供给我们的完整示例(考虑到这是解决问题的"错误"方法,但如果你想遵循这种模式,那就可以了):

function pagesearch($pages, $string) {
    if (!empty($pages) && !empty($string)) {
        $tags = [];
        foreach ($pages as $page) {
            if ($lines = file($page)) {
                foreach ($lines as $line) {
                    if (!empty($line)) {
                        if (mb_strpos($line, $string)) {
                            $tags[$page][] = $line;
                        }
                    }
                }
            }
        }
        return $tags;
    }
}

这将返回一个数组,其中包含您所引用的所有页面以及您所查找的单词的所有出现情况,以页面分隔。正如我所说,这不是你想要的解决方法,但它是一种方法。

希望有帮助

由于您不想使用任何数据库,并且由于数据库这个术语非常广泛并且包含文件系统,因此您希望在没有数据库的情况下在某些数据库中进行搜索。

这没有意义。在您的示例中,至少有一个数据库是文件系统。如果你可以接受这样一个事实,你想搜索数据库(这里是你的html文件),但你不想使用数据库来存储任何与搜索相关的东西(例如一些索引或缓存结果),那么你的建议基本上是如何工作的:一个实时的,基于文本的,逐行文件搜索。

当然这是非常基本的,但你的约束是"没有数据库",你已经找到了唯一可能的方法。是的,它会给你的服务器带来压力,因为实时搜索是昂贵的。

通常情况下,Lucene/Solr用于作业,但这是一个数据库和服务器。