ホームページ php教程 php手册 PHP検索エンジン技術の中核が明らかに

PHP検索エンジン技術の中核が明らかに

Jun 21, 2016 am 09:02 AM
google html string



ウェブ検索エンジンについて話すとき、ほとんどの人は Yahoo を思い浮かべるでしょう。実際、Yahoo はインターネット検索の時代を築きました。ただし、Yahoo が現在 Web 検索に使用しているテクノロジーは、もともと同社が開発したものではありません。 20008月、Yaタイガーは Google(www.google.com) スタンフォード大学の学生が設立したベンチャー企業の技術。理由は非常に簡単です。Google の検索 エンジンは、Yahoo の の以前のテクノロジーよりも高速かつ正確に必要な情報を検索できるからです。 。

残念ながら、短期間に強力で効率的な検索エンジンとデータベースを自社で設計、開発することは技術的にも資金的にも不可能です。しかし、 Yahoo は 他人のテクノロジーを使用しているので、他人の既製の検索エンジン Web サイトも使用できるでしょうか?

プログラミングのアイデアの分析

これを想像できます: クエリをシミュレートして質問します。ある検索エンジン Web サイトは、対応する形式で検索コマンドを発行し、検索結果を返し、結果の HTML コードを分析し、冗長な文字やコードを取り除き、最後に当社ウェブサイトのページに表示されている必要な形式を押します。

このように、問題の鍵は、(検索がより意味のあるものになるように) 正確で、(検索結果の分析に余分な時間が必要なため) 高速な検索情報を選択する必要があるということです。新世代の検索エンジン HTML ソース コード分析とストリッピングに便利) を備えた検索 Web サイト🎜>Google のさまざまな優れた機能。ここでは、PHP を使用して のバックグラウンド処理を実装する方法を確認する例としてそれを選択します。 Google(www.google.com)検索およびフロントエンドのパーソナライズされた表示プロセス。

まず、Google のクエリコマンドの構成を見てみましょう。 www.google.com Web サイトに入り、クエリ バーに abcd と入力して、クリックしますクエリ ボタンをクリックすると、ブラウザのアドレス 列が に変更されることがわかります: "http://www.google.com/search?q=abcd&btnG=Google%CB%D1% CB%F7&hl =zh-CN&lr="Google がフォーム を介していることがわかります。 get メソッドを使用して、クエリ パラメーターを渡し、クエリ コマンドを送信します。 PHPfile() 関数を使用して、このクエリ プロセスをシミュレートできます。

ファイル()関数
構文
: 配列ファイル (文字列ファイル名);
戻り値は配列であり、すべてのファイルが配列変数に読み込まれます。ここでのファイルはローカルまたはリモートにすることができ、リモート ファイルは使用されるプロトコルを示す必要があります。例: result=file(“http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr= ” )、このステートメントは、単語 "abcdGoogle に対するクエリをシミュレートします。 🎜> " の処理が行われ、検索結果は行ごとの要素の形式で配列変数 result に返されます。ここで読み取られるファイルはリモートであるため、プロトコル名 "http://" が欠落することはできません。

任意の検索でユーザーに検索文字を入力してもらいたい場合は、入力テキスト ボックスと送信ボタンを作成し、検索文字を上に設定できます "abcd"変数に置き換えます: echo
//
パラメータなし form、デフォルトの送信メソッドは get、それ自体に送信されます echo; //
テキスト入力ボックスを構築します echo; //
クエリ送信ボタンを構築します echo
; >if (
isset
(キーワード)) //
送信後
PHP は変数 kwywords を生成します では、送信後に次のプログラムを実行する必要があります { urlencode(キーワード); //
URLエンコード
result=file ("http:/ /www.google.com/search?q=".キーワード。"&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr= ; 🎜>中
result_string=join(" ", result); //配列を変換$resultに結合文字列、各配列要素はスペースで結合されます
... //さらなる処理
} ?> 上記のプログラムは、ユーザーの入力内容に従ってクエリを実行し、返された結果を文字列変数
$ result_string
に合成することができます。ユーザー入力を

URL
urlencode() 関数を使用する必要があることに注意してください。 > エンコーディング、入力された漢字、スペース、その他の特殊文字は通常どおりクエリできます。これは、Google のクエリ コマンドをシミュレートするためでもあります。可能な限り現実的な検索結果を保証します。 Google

わかりやすくするために、本当に必要なのは検索結果のタイトルであると仮定しましょう。 URLや紹介文など。これはシンプルかつ典型的な要件です。このように、私たちがしなければならないことは、Google 検索結果のヘッダーとフッター (Google ロゴ、再検索入力ボックス、検索結果の説明などを削除し、残りの検索結果から元の HTML 形式のタグを削除します。項目を指定し、必要な形式に置き換えます。

これを行うには、Google の検索結果を注意深く分析する必要があります HTML ソース コードを参照し、ルールを見つけます。 Google の検索結果のテキストが常に最初の ソース コードの
タグと最後から 2 番目の


タグ、および最後から 2 番目の

タグの後には
table 文字が続き、この組み合わせ "

以下のすべての手順は、上記手順 .
result_string = strstr
(
result_string
、""); // は、最初の から result_string

を取得します。 の開始後の文字列 GoogleHeader
position= strpos (result_string,"

テーブル
シンボルの位置
result_string= substr (result_string ,0, 位置);//
最初の

table
シンボル , の前にある文字列 をインターセプトします。 脚注を削除します

アプリケーションと実装

OK、これで便利な HTML ソース コード トランクが完成しました。残りの質問は、これらの検索結果エントリを自律的に分析する方法です。各エントリは非常に規則的に
によって区切られていることがわかりました。つまり、各エントリは 1 つの 段落と 段落に分割されています。 explode() 関数を使用して各エントリを分割します:

構文: explode (文字列区切り文字、文字列 文字列);

区切り文字 以降の各 で切り取った配列を返します。小さな文字列は配列

に保存されます。つまり、
result_array(") >", result_string); //
文字列 "

"
を使用して結果

配列 result_array を取得します。ここで、各要素は検索結果エントリです。各エントリとその HTML 表示形式コードを調べて、必要に応じて result_array for( i=0; i
{ .. . //各エントリを処理する
}
各エントリのいくつかの特徴も簡単に見つけることができます。各エントリはタイトル、要約、紹介、カテゴリ、URL などで構成されています。各部分は行折り返されている、つまり

タグが含まれているため、再度分割されます: (次のハンドラーは上記のループ内に配置されます)
every_item=explode("",
result_array[ i
]);
このようにして、配列 every_item を取得します。ここで、 every_item[0] はタイトルです。 every_item[1] および every_item[2]2 行の概要、 every_item[3] every_item[4]etc のヘッダーに "はじめに:","< が含まれる場合font size=- 1 color=#6f6f6f>Category:< /font>” 文字は紹介またはカテゴリです (一部の結果エントリにはこの項目)、ヘッダーに "" が含まれている場合、 が URL であることがよくあります。この比較を使用して判断します。たとえば、タイトルを含む $every_item[0] を置き換える場合は、正規表現 (省略) も非常に便利です。自体はリンクされています。このリンク属性を変更して、新しいウィンドウでリンクが開くようにしたいと考えています。
echo eregi_replace( {
... //
は、最初の項目を除くエントリ内の各項目を処理します (最初の項目はタイトルであり、すでに表示されています)
... //
その他の形式変更
}

このようにして、リンク属性が変更され、他の多くの表示形式の変更、削除、置換を正規表現で置き換えることができます eregi_replace()で完了です。

この時点で各検索項目の各項目を取得できており、各項目の形式を任意に変更したり、美しいテーブルを載せたりすることもできます。ただし、優れたプログラムはさまざまな動作環境に適応できる必要があり、ここでも例外ではありません。実際、ここでは検索結果から HTML を削除するフレームワーク方法についてのみ説明しました。本当にやらなければならないのは、これを完璧に行うには、検索結果が合計で何件あるか、 ページが何ページに分割されているかなどを表示するなど、多くのことを考慮する必要があります。 🎜>関連するもの"カテゴリー", "はじめに およびその他のコードにより、顧客は元の Web サイトをまったく見ることができなくなります。ただし、HTML を解析することで、これらの内容や要件を抽出することができます。今では誰もが自分で行うことができ、高度にパーソナライズされた検索エンジンを構築できます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

Google、AI Test Kitchen & Imagen 3 をほとんどのユーザーに公開 Google、AI Test Kitchen & Imagen 3 をほとんどのユーザーに公開 Sep 12, 2024 pm 12:17 PM

Google の AI Test Kitchen には、ユーザーが遊べる一連の AI 設計ツールが含まれており、現在、世界 100 か国をはるかに超える国のユーザーに公開されています。この動きにより、世界中の多くの人が Imagen 3、Google を使用できるようになるのは初めてです。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

See all articles