Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Снять защиту с doc файла средствами php (http://forum.oszone.net/showthread.php?t=234839)

Hector 17-05-2012 13:58 1917618

Снять защиту с doc файла средствами php
 
Вложений: 1
Есть файл (см. вложение) он лежит на сервере и содержит замены в расписании. Я пытаюсь представить его в виде html этим способом

Проблема в том, что файл открывается в режиме защищенного просмотра, а google отказывается работать с такими файлами.
Если открыть файл и Ctrl+A, Ctrl+C, Ctrl+V то полученный новый файл обрабатывается нормально

Вопрос: как средствами php привести файл к божескому виду (чтобы он нормально обрабатывался google)?

ferget 17-05-2012 15:09 1917672

то как открывается файл зависит от настроек ОС, смените настройки

Hector 17-05-2012 15:18 1917682

ferget, на сервере под linux открывается нормально, но скрипт с ним все равно не срабатывает, а все работает если банально создать новый файл скопировав содержимое.

сам файл создается какой-то самописной программой, для генерации расписания

Hector 17-05-2012 18:50 1917814

проблема решилось таким скриптом
PHP код:

<?php

header 
('Content-type: text/html; charset=utf-8');

/**
 * Чтение из не совсем русского файлика DOC
 *
 */

// Отрубаем нах сообщения по ошибкам
error_reporting(0);

// Рабочий файлец
$file_name 'changes.doc';

// Проверяем наличие
if (file_exists($file_name)) {

    
// Пробуем открыть
    
$handle = @fopen($file_name'r');

    
// Если открылось
    
if ($handle) {

        
// Ключ вывода активной строки
        
$key FALSE;

        
// Читаем построчно
        
while (($buffer fgets($handle1024)) !== false) {

            
// Найден конец вывода
            
if (stripos($bufferchr(0)) !== false) {
                if (
$key$key FALSE;
            }

            
// Найдено начало текста - ПОД ЧЕРТОЙ
            
if (stripos($buffer'ПОД ЧЕРТОЙ') !== false) {
                
$key TRUE;
                
$buffer substr($bufferstrrpos($buffer'ПОД ЧЕРТОЙ'));
            }

            
// Найдено начало текста - НАД ЧЕРТОЙ
            
if (stripos($buffer'НАД ЧЕРТОЙ') !== false) {
                
$key TRUE;
                
$buffer substr($bufferstrrpos($buffer'НАД ЧЕРТОЙ'));
            }

            
// Вывод активной строки
            
if ($key) {

                
// Имитация таблицы
                
$buffer str_replace(chr(13).chr(13), '<table><tr><td>'$buffer);
                
$buffer str_replace(chr(07).chr(07), '</td></tr><tr><td>'$buffer);
                
$buffer str_replace(chr(07), '</td><td>'$buffer);

                
// Вырезаем левые символы
                
$buffer str_replace(chr(32), ' '$buffer);      // пробел
                
$buffer str_replace(chr(07), ''$buffer);       // звонок
                
$buffer str_replace(chr(09), ' '$buffer);      // табуляция
                
$buffer str_replace(chr(13), '<br />'$buffer); // перевод строки

                
$buffer iconv("windows-1251""UTF-8"$buffer);    

                echo 
$buffer '<br />';

            }

        }

        
// Закрываем
        
fclose($handle);

    }

} else exit(
'WTF?');


Sham 18-05-2012 04:59 1918010

По ссылке работает только с simplexml-форматом, а приаттаченый файл вроде бинарный, и указанный скрипт парсит бинарный doc.
емнип simplexml - это "сохранить как - XML-документ" с нужным расширением.


Время: 08:12.

Время: 08:12.
© OSzone.net 2001-