2011-07-27 33 views
0

私はURLに取り組んでいます。テキストを取得する現在のURLの内容をPHPで表示

私はそれが可能であるどのようにこのサイトからテキストのみのconent(テキストのみ) http://en.wikipedia.org/wiki/Asia

を取得したい場合。 PHPを使用してURLのタイトルとURLを取得できます。

$url = getenv('HTTP_REFERER'); 

$file = file($url); 
$file = implode("",$file); 

//$get_description = file_get_contents($url); 

if(preg_match("/<title>(.+)<\/title>/i",$file,$m)) 
$get_title = $m[1]; 
echo $get_title; 

はあなたがコンテンツを取得するために私を助けるPLでした:

は、私は以下のコードを使用して、URLのタイトルを得ました。

file_get_contentを使用すると、HTMLコードだけを取得できます。他の可能性は?

おかげ - ハーン

答えて

1

HTMLページのテキスト版を取得したい場合は、自分で処理する必要があります。 HTMLを取得して(すでにやっているように思えるように)、PHPでプレーンテキストに処理します。

これを行うにはいくつかの方法があります。最初はhtmlspecialchars()で、すべてのHTML特殊文字をエスケープします。私はこれがあなたが実際に望むものだとは思わないが、私は完全性のためにそれを言いたいと思った。

2番目の方法はstrip_tags()です。これにより、HTML文書からすべてのHTMLが完全に削除されます。しかし、入力を検証するのではなく、単純なテキストを置き換えるだけです。これは、あなたが含まれているテキスト表現に望ましくないかもしれないもの(headセクションの内容、または埋め込まれたjavascriptとスタイルシートの内部など)になることを意味します。

もう1つの方法は、 DOMDocumentを持つHTML。あなたは(時間がない)のために、私は、コードを書かれていませんでしたが、一般的な手順は次のように次のようになります。ドキュメントのbody要素や反復を取得DOMDocumentオブジェクト

    1. ロードHTMLその子どもたちに
    2. それぞれの子に対して、問題の子がテキストノードである場合は、それを出力文字列に追加します。テキストノードでない場合は、その子ノードを反復処理して、その子ノードがテキストノードであるかどうかを確認します(そうでない場合は、その子要素も繰り返し処理します)。また、ノードのタイプをさらに確認することもできます。たとえば、javascriptやcssが出力に埋め込まれないようにするには、タグタイプがSTYLEかSCRIPTではないことを確認し、そうであれば無視します。

    上記の説明は、再帰関数(自身を呼び出す関数)として最も簡単に実装されています。

    最終結果は、ダウンロードページのテキストコンテンツのみを含む文字列で、マークアップは不要です。

    編集:strip_tagsを忘れてしまった!私はそれに言及するために私の答えを更新しました。私は、DOMDocumentがそれを解析しようとするのに対し、strip_tagsステートのドキュメンテーションとしてマークアップの検証を行わないため、DOMDocumentアプローチを私の答えに含めました。DOMDocumentベースのテキスト抽出が実装されているとよく)。

  • +0

    最後のアプローチを試みます。貴重な答えをありがとう – hjaffer2001

    1

    使用file_get_contentsは、HTMLコンテンツを取得し、その後、strip_tagsので、テキストだけを残して、HTMLタグを削除します。

    +0

    ありがとうございました。グレート – hjaffer2001

    関連する問題