![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
Serebrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 22.5.2007 Где: Ташкент Репутация: нет Всего: нет |
Привет знатоки.
Искал в инете, но не нашел нужный мне ответ. Имеется некий заполненный шаблон файл templ.doc Надо заменить некоторые слова этого файла. Как можно это сделать? fopen открывает файл, но fread дает ошибку Заранее спасибо. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
||||
|
||||
Serebrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 22.5.2007 Где: Ташкент Репутация: нет Всего: нет |
Ошибка:
Warning: filesize() [function.filesize]: stat failed for Resource id #5 in D:\www\xampp\htdocs\terminal\editor\list_bring.php on line 9 Вот сам код:
|
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: нет Всего: 67 |
Параметры filesize как бы намекают нам, что передавать нужно имя файла, а текст ошибки "stat failed for Resource id #5" намекает на то, что передается как параметр вовсе не строка, а ресурс
![]() -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
Serebrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 22.5.2007 Где: Ташкент Репутация: нет Всего: нет |
solenko, я исправил ошибку:
Вот результат: �ࡱ� Это и есть $rd, т.е. $rd отображает не нормальный текст, а кривляку. Как можно понятно прочитать контент ворд файла? В самом файле хранится такой текст: "Управляем MS Word через PHP", это пробный текст. Это сообщение отредактировал(а) Serebrus - 2.2.2011, 07:39 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
а ты word'овский файл блокнотом открой. думаешь, там только текст в "чистом виде"? а форматирование как бы хранилось? на самом деле, не понятно. если хочешь получить контент - заморачиваться стоит, но ты ж собирался заменить некие блоки-метки на значения. для этого не обязательно разбирать структуру и "вытягивать текст" - чтоб просто заменить "!!%%%%!!" на "Оля" и сохранить текст обратно. если все ж надумаешь "вытягивать контент" - возможны варианты с привлечением OpenOffice или "на чистом PHP" |
|||
|
||||
Serebrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 22.5.2007 Где: Ташкент Репутация: нет Всего: нет |
skyboy, вы правы, мне именно надо заменить не открывая документ. Просто я думал что для замены надо прочитать контент. А как можно просто заменить не открывая (т.е. не имея контент)?
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
skyboy, не писал, что не надо открывать документ.
дословно это означает: открыть файл fopen(), получить его содержимое в строку fread(), fclose() заменить какую-то последовательность символов str_replace() или preg_replace() записать обратно fopen, fwrite, fclose Добавлено через 33 секунды и не нужно смотреть никакие �ࡱ� |
|||
|
||||
Serebrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 22.5.2007 Где: Ташкент Репутация: нет Всего: нет |
bars80080, ваш варианит не подошел, текст совсем не изменился.
Исходный текст: "Управляем MS Word через PHP"
Результат: "Управляем MS Word через PHP" Это сообщение отредактировал(а) Serebrus - 2.2.2011, 16:30 |
|||
|
||||
topy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 18.2.2008 Репутация: нет Всего: 1 |
Текст в ворде хранится закодированным. чтобы что-то заменить в в вордовском файле надо это что-то сначала закодировать в �ࡱ�, потом найти нужные нам �ࡱ� и заменить на наши �ࡱ�.
Коллеги, поправьте если я не прав? Это сообщение отредактировал(а) topy - 2.2.2011, 17:36 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
не, это я неверную мысль подал. минимум - текст хранится в unicode, даже не привычном utf-8. плюс после перекодирования я вижу, что названия стилей читаемы, а вот текстовой части документа нет. так что сорри, Serebrus, надо, как минимум, выяснить, как кодируется каждый символ. видимо, не только в кодировке дело, но и в атрибутах, указываемых для каждого стиля в отдельности. думаю, вместо ковыряния структуры будет рациональнее вместо .doc работать с шаблоном в .rtf или же использовать готовую библиотеку. но сходу ничего толкового не нашел. |
|||
|
||||
Serebrus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 22.5.2007 Где: Ташкент Репутация: нет Всего: нет |
skyboy, увы, к сожелению с rtf тоже самое, он тоже не меняется с вышеуказанным скриптом.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
Serebrus, все не латинское хранится в UTF-8 в особом формате: "привет" становится "\'84\'81\'84\'82\'84\'79\'84\'72\'84\'75\'84\'84"
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 12 Всего: 386 |
а зачем нужен именно doc файл?
http://www.phpdocx.com/ ? Правда не в курсе, насколько бесплатная версия полезна. Впрочем при надобности можно и платную купить за $90 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
studentigor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 397 Регистрация: 14.11.2008 Репутация: нет Всего: нет |
смотри
Вот это кусок, который заменяет #CompanyName на нужное значение из базы. Работает, у себя взял. А doc -там не все так просто - там все хранится в двоичной системе, вобщем в кратком описании я понял что там что-то похожее на асемблер, если интересно - прочитай документация на doc файлы. Но если тебе такое надо на один раз - поищи готовые решение, ибо раздуплять - это долго. И текст так просто оттуда не вытянуть, нужно писать клас декодер(ну или найти в нете), и это пол дела, потому что потом ещё нужно написать ещё класс который бы все это загонял. Я искал но такие только платные, а платить за кота в мешке не хочется. Есть правдо com -но он только под виндой работает. на линухе не идет. Я нашел чуток другой выход. Если тебе надо именно файл в формате doc. Делаю документ в ртф по шаблону, потом есть либа phplivedocx на зенде, она конвертирует в разные форматы, в doc,docx,pdf,html,... Потом передаеш это название в ф-ю, указываеш в какой формат конвертировать и вуаля, конвертирует замечательно, на одном дыхании. Ну зависет конечно от размера документа |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Тексты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |