Как я могу разобрать с 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 лайк Марк Бейкер рекомендует в своем комментарии.
В конце мне пришлось установить 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) ;
чтобы увидеть результат на экране.
Это то, что для меня лучше всего работает до сих пор.
Если у кого-то есть лучшее решение, пожалуйста, скажите мне.
Других решений пока нет …