2010-11-24 12 views
2

一部のユーザーがMicrosoft Word文書をアップロードできるサイトを作成した後、他のユーザーが特定のキーワードを含むアップロードされた文書を検索できるサイトの作成について質問されました。このサイトは、PHPとMySQLを実行しているLinuxサーバーに座っているだろう。私は現在、文書からこのテキストを掻き取ることができるかどうか、どのように掻くことができるかを調べようとしています。もし誰かがこれをやり遂げる良い方法を示唆することができれば、それは非常に高く評価されるだろう。ここでLinuxサーバでMS Word文書のテキストを傷つけるにはどうしたらいいですか?

+0

どのバージョンのWord?古い.DOC形式または新しいXMLベースの形式、あるいはその両方?あなたのサーバでヘッドレスOpenOfficeインスタンスを使用するのはオプションですか? –

+0

理想的には、ユーザーがそれを掴むものであればどんなものでも処理できるはずです。私は過去にOOoを使用して、ドキュメントをHTMLに変換しました。それは良い選択です。私の主な心配は、サーバスクリプトから呼び出すことはあまりにも多くのリソースを使い切ることです。 –

答えて

2

catdocを使用して良い例です:新しいDOCX形式からテキストを削れ

function catdoc_string($str) 
{ 
    // requires catdoc 

    // write to temp file 
    $tmpfname = tempnam ('/tmp','doc'); 
    $handle = fopen($tmpfname,'w'); 
    fwrite($handle,$a); 
    fclose($handle); 

    // run catdoc 
    $ret = shell_exec('catdoc -ab '.escapeshellarg($tmpfname) .' 2>&1'); 

    // remove temp file 
    unlink($tmpfname); 

    if (preg_match('/^sh: line 1: catdoc/i',$ret)) { 
     return false; 
    } 

    return trim($ret); 
} 

function catdoc_file($fname) 
{ 
    // requires catdoc 

    // run catdoc 
    $ret = shell_exec('catdoc -ab '.escapeshellarg($fname) .' 2>&1'); 

    if (preg_match('/^sh: line 1: catdoc/i',$ret)) { 
     return false; 
    } 

    return trim($ret); 
} 

Source

+0

それはトリックを行うことができるように見えるクール。私はそれを調べます。ありがとう –

4

は自明です。ファイルそのものはzipファイルであり、内部を見ると、たくさんのxmlファイルが見つかります。テキストはこのzipファイル内のword/document.xmlに含まれており、実際にユーザーが入力したすべてのテキストは< w:t >タグに表示されます。 < w:t >タグに表示されているすべてのテキストを抽出すると、文書をスクラップしたことになります。

+0

docxについての説明をありがとう。 catdocはdocxファイルでは動作しませんので、私はそのコンボを使用しています。あなたが言ったことをやっている小さなバッシュをここで見つけます:http://stackoverflow.com/questions/1184747/rtf-doc-docx-text-プログラム内での抽出-c-qt –

+0

このような単純なスクリプトをXMLの解析に使用することには注意が必要です。XMLの解析は非常に簡単ですが、bashスクリプトまたは正規表現を使用すると、 (何らかの理由で)wタグで奇妙なものが浮かんでいる。 – ZoFreX

関連する問題