2017-11-21 8 views
0

基本的に、長いテキストファイル(ソースコード)をとり、そのファイル内の特定のキーワードを探して、次の400文字を出力したいそのキーワードの後に​​来る。キーワードの後に​​すべてのものが欲しいというわけではありません.20,000文字以上になるからです。 できれば、私はそれらをすぐに切り分けたいと思っています(これは私が元にしようとしたものですが、失敗しました)。非常に混乱しています。 400文字を取得できるだけであれば、それをテキストファイルに保存して、その400文字のテキストファイルを区切ります。今PHP長いテキストで特定のキーワードの後に​​来る文字列を出力する方法

私のコードは次のとおりです。

 <?php 
      $website = $_GET["website"]; //I'm pulling the website from a form 
      $contents = file_get_contents($website)); 
      $del = 'keyword'; 
      $search = preg_quote($del, '/'); 
      $search = "/^.*$search.*\$/m"; 
      if(preg_match_all($search, $contents, $found)){ 
       echo implode("\n", $found[0]); 
      }else{} 
     ?> 

問題は、キーワードの後に​​すべてを印刷し、私も私が何を得る取り、さらにそれを区切ることはできません以上です。私は、解決策からさらに遠くになるにつれて、より多くのアイデアを思い付くようになっています。 何か助けていただければ幸いです。

+0

ソースコードHTMLまたはXMLですか? –

答えて

2

substr($your_string, 0, 400)を使用すると、文字列から始まる文字数が400文字に制限されます。この方法を使用するための

構文は、strposstrlensubstrの組み合わせでこれを行うことができますsubstr(string,start,length)

1

です。これを行うには正規表現は必要ありません。正規表現は一般的に死として遅いので、使用しないでください。可能であれば、正規表現は避け、他の答えがない場合にのみ使用してください。

<?php 
$website = $_GET["website"]; //I'm pulling the website from a form 
$contents = file_get_contents($website)); 
$del = 'keyword'; 

//get the index of the end of your split value 
//this is the character index of your keyword, plus the length of the keyword, 
//so it will start collecting the next bit at the end of the first occurance of keyword. 
$index = strpos($contents, $del) + strlen($del); 

//get the text you want 
$text = substr($contents, $index, 400); 
関連する問題