Разбор — как проанализировать файл Microsoft Word 97-2004 .doc с переполнением стека

Как я могу разобрать с PHP файл .doc «Документ Microsoft Word 97-2004»?

Я могу разобрать «нормальные» .doc файлы с

private function read_doc() {
$fileHandle = fopen($this->filename, "r");
$line = @fread($fileHandle, filesize($this->filename));
$lines = explode(chr(0x0D),$line);
$outtext = "";
foreach($lines as $thisline)
{
$pos = strpos($thisline, chr(0x00));
if (($pos !== FALSE)||(strlen($thisline)==0))
{
} else {
$outtext .= $thisline." ";
}
}
//print_r($outtext);die();
$outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
return $outtext;
}

но это не работает с файлами Microsoft Word 97-2004 .doc.
Я просто хочу извлечь чистый текст. Ничего больше.

—> Решение является PHPWord лайк Марк Бейкер рекомендует в своем комментарии.

2

Решение

В конце мне пришлось установить linux catdoc 0.94.2 для решения проблемы. PHPWord не может правильно преобразовать все файлы в чистый формат .txt.

Итак, вот решение для пользователей Linux (например, Unbuntu):
В командной строке установите catdoc

sudo apt-get install catdoc

Если вы используете Windows Server, посмотрите на это. Это сработало и для меня:

http://blog.brush.co.nz/2009/09/catdoc-windows/

Затем в вашем PHP-коде вы можете назвать это так (для вызовов Linux):

$escapeFile = escapeshellarg($data['tmp_name']);
$command = "catdoc $escapeFile";
$output = array();
exec($command,$output);
$text = implode("\n",$output);

тогда вы можете сделать, например,

$text = strip_tags($text);
$text = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $text);
echo nl2br($text) ;

чтобы увидеть результат на экране.

Это то, что для меня лучше всего работает до сих пор.
Если у кого-то есть лучшее решение, пожалуйста, скажите мне.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]