什么是在PHP中编写代码的最佳方式,它将在网页中搜索存储在文件中的大量单词?将源代码存储在文件中还是另一种方式最好?请帮忙。在网页中搜索
Q
在网页中搜索
0
A
回答
1
最好的办法是使用谷歌:site:example.com word1 OR word2 OR word3
你想在一个页面中进行搜索?或一个网站与多个网页? 如果它只有一个页面,我认为你可以存储在内存中的HTML代码没有问题。 如果你确切地知道你搜索条件达到的词可能是最快的(stripos不区分大小写)。你也可以定义自己的角色等级和使用preg_match_all什么......只是这样的事情会做...
<?
$keywords = array("word1","word2","word3");
$doc = strip_tags(file_get_contents("http://www.example.com")); // remove tags to get only text
$doc = preg_replace('/\s+/', ' ',$doc); // remove multiple whitespaces...
foreach($keywords as $word) {
$pos = stripos($doc,$word);
if($pos !== false) {
echo "match: ...".str_replace($word,"<em>$word</em>",substr($doc,$pos-20,50))."... \n";
}
}
?>
像例如下面将基于带O HashMap中查找更快的性能要(1)并且不需要为每个关键字扫描整个文本...
<?
setlocale(LC_ALL, "en_US.utf8");
$keywords = array("word1","word2","word3","word4");
$doc = file_get_contents("http://www.example.com");
$doc = strtolower($doc);
$doc = preg_replace('!/\*.*?\*/!s', '', $doc);
$doc = preg_replace("/<!--.*>/i", "", $doc);
$doc = preg_replace('!<script.*?script>!s', '', $doc);
$doc = preg_replace('!<style.*?style>!s', '', $doc);
$doc = strip_tags($doc);
$doc = preg_replace('/[^0-9a-z\s]/','',$doc);
$doc = iconv('UTF-8', 'ASCII//TRANSLIT', $doc); // check if encoding is really utf8
//$doc = preg_replace('{(.)\1+}','$1',$doc); remove duplicate chars ... possible step to add even more fuzzyness
$doc = preg_split("/\s+/",trim($doc));
foreach($keywords as $word) {
$word = strtolower($word);
$word = iconv('UTF-8', 'ASCII//TRANSLIT', $word);
$key = array_search($word,$doc);
var_dump($key);
if($key !== false) {
echo "match: ";
for($i=$key;$i<=5 && isset($doc[$i]);$i++) {
echo $doc[$i]." ";
}
}
}
?>
此代码未经测试。
那就不过是更优雅的从一个DOMDocument
简单的搜索转储textnodes容易。如果你想在整个网站上搜索,抓取逻辑很困难。
我曾经为一家像爬虫一样工作的公司做过反向链接检查。
我的第一个建议是不要做一个递归(如在扫描一个页面,下面各个环节,下面的所有链接,直到你达到一定的水平...)
,而像这样做:
与您想要爬取的许多关卡一样频繁地执行for循环。
设置站点阵列与一个条目(开始页)
通阵列功能下载的每一个环节,扫描网站存在并存储在阵列上的联系。 当完成所有链接时返回新的链接列表数组
在for循环中用函数的返回值更新数组,然后再次调用函数。
这样,您可以避免遵循恶劣路径,而是逐级抓取网站。 还存储已经访问过的数组中的链接跳过,不遵循外部链接,检查奇怪的url参数等。
未来使用您可以将文档存储在lucene或solr中,有一些类可以将html页面转化为有意义的lucene对象并在其中搜索。
相关问题
- 1. 在网页中搜索.Android
- 2. Python网页搜索
- 3. 免费网页搜索API或网页搜索日志
- 4. 使用bash在网页中搜索
- 5. 实时网页搜索(在.Net中)
- 6. 如何在网页中搜索单词
- 7. 使用python 3.5在网页中搜索
- 8. 搜索在我的网站的网页
- 9. 在移动网页上搜索页面
- 10. 离线网页搜索
- 11. 使用pdf搜索网页
- 12. Opencart作为搜索引擎优化网页的搜索页面
- 13. 我的网站搜索框在页面内搜索
- 14. 在网址上搜索大量的Google学术搜索页面
- 15. Selenium网页中的文本搜索
- 16. Python网页中的Python搜索脚本
- 17. 将搜索栏插入到网页中
- 18. 在网页上搜索文本
- 19. 搜索在网页+ IOS文本框
- 20. 阻止搜索引擎索引网页
- 21. 搜索网站和joomla网页
- 22. 网站搜索200k页面网站
- 23. Autoit - 在网页中搜索网址并点击它
- 24. 分页+在cakephp中搜索
- 25. 在Electron中搜索页面?
- 26. 搜索页从多个表中搜索
- 27. FT在搜索页面上搜索
- 28. 没有网页的.NET搜索连接器(Windows搜索)
- 29. 如何搜索网页上的搜索字段?
- 30. 用Java搜索Google的本地化网页搜索
是的,它只有一个页面,我需要搜索,我有一个文件,其中我存储了一些关键字,当我在网页中找到该关键字时,我想在屏幕上打印下2-3个单词关键字之后。 – Bogdan 2010-10-02 20:53:47
那么这个例子对你来说很好,我更新了代码。 – 2010-10-02 21:03:11