0

から取得したURL$_SERVER['REQUEST_URI']をdomDocumentにロードする方法は?

特定の単語を解析するために動的 Web ページを DOMDocument に読み込もうとしています。最終的には、自分のサイト (Tiki Wiki CMS) の用語集を作成したいと考えています。私は非常に単純なものから始めましたが、現在はテスト目的でページをロードしてテキストを解析しようとしています。私は DOMDocument が初めてで、このサイトと PHP マニュアルのいくつかの記事を読んだ後、HTML ページを で読み込んでから、サイトを解析する必要があることを知っていloadHTMLFileます。静的ページでは問題なく動作しますが、ユーザーがサイトをアップロードするときに解析を実行する必要があるため、静的 URL を に入力できないことが主な問題です。getElementsByIdgetElementsByTagNameloadHTMLFile

DIDが機能するコードは次のとおりです。

$url = 'http://mysite.org/bbk/tiki-index.php?page=pagetext';
$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$a = $dom->getElementsByTagName('a');

foreach ($a as $link) {
echo $link->nodeValue;
}

そこで、ジョブに $_SERVER['REQUEST_URI'] を使用できると思ったのですが、うまくいきませんでした。

これは機能しませんでした(エラーメッセージなし):

$url = $_SERVER['REQUEST_URI'];
$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$a = $dom->getElementsByTagName('a');

foreach ($a as $link) {
echo $link->nodeValue;
}

$url の出力を確認した後、機能http://mysite.orgする URL と同じにするために追加することにしました。ただし、運も悪く、今回は内部サーバーエラーが発生しました。

これも機能しませんでした(内部サーバー エラー):

$url = 'http://mysite.org' . $_SERVER['REQUEST_URI'];
$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$a = $dom->getElementsByTagName('a');

foreach ($a as $link) {
echo $link->nodeValue;
}

ここでかなりのものが欠けていると思います。この方法で DOMDocument を使用することは不可能かもしれないと思ったので、Web で再度ヘルプを検索していました ($_SERVER['REQUEST_URI'] をDOMdocument をまったく使用していません) が、答えが見つかりませんでした。ですから、ここにいる誰かが助けてくれることを願っています。正規表現での解析が必要なものを除いて、サードパーティのパーサーなどを含む提案は役に立ちます。Tiki Wiki CMS には、正規表現を使用した用語集オプションが既にありますが、非常にバグがあります。

ありがとう。

アップデート

問題に対する答えは見つかりませんでしたが、自分の間違いがどこにあったかについてはわかっていると思います。$_SERVER['REQUEST_URI']まだ完全に構築されていない動的ページで実行することを期待していました。メインのセットアップ ページでスクリプトを実行したので、HTML を指定しようとしたときに、HTML がまだレンダリングされていなかったと思います$_SERVER['REQUEST_URI']。これが問題である可能性があることに気付いたとき、DomDocument を使用してドキュメントを解析するという考えを放棄し、ドキュメントの準備ができた後にロードできる JavaScript ソリューションを使用しました。

4

1 に答える 1