PHP 编辑 Microsoft Word 文档 str_replace 和 preg_replace 不起作用
假设,我有 MSWord 文件 source.doc,其下一个内容是“Microsoft Word 文件的内容”。 例如,我想通过 PHP 打开它,并将单词“Microsoft”替换为“Openoffice”,并将结果保存到 result.doc 中。 这是使用 preg_replace
的代码:
$content = file_get_contents( SOMEPATH . '/source.doc' );
$new_content = preg_replace( '/Microsoft/i', 'Openoffice', $content );
file_put_contents( SOMEPATH . '/target.doc', $new_content );
或使用 str_replace
:
$content = file_get_contents( SOMEPATH . '/source.doc' );
$new_content = str_replace( 'Microsoft', 'Openoffice', $content );
file_put_contents( SOMEPATH . '/target.doc', $new_content );
它们都不起作用。代码运行没有任何异常,但 target.doc 与 source.doc 相同。更换不执行。
我已经尝试了很多不同的接收方式,例如正则表达式修饰符、 iconv 等,但没有任何帮助。
$content
的 var_dump
显示了 source.doc 的原始结构,其中充满了不寻常的字符,并且我认为其中一些会停止 str_replace
或 preg_replace
扫描。无法弄清楚它是哪个字符以及如果找到它我该怎么办。
$new_content
的 var_dump
与 $content 相同。
感谢转发任何帮助!
Assume, I've got MSWord file source.doc with next content "Content of Microsoft Word file".
For example, I'd like to open it via PHP and replace word "Microsoft" to "Openoffice" and save the result into result.doc.
Here is the code using preg_replace
:
$content = file_get_contents( SOMEPATH . '/source.doc' );
$new_content = preg_replace( '/Microsoft/i', 'Openoffice', $content );
file_put_contents( SOMEPATH . '/target.doc', $new_content );
Or using str_replace
:
$content = file_get_contents( SOMEPATH . '/source.doc' );
$new_content = str_replace( 'Microsoft', 'Openoffice', $content );
file_put_contents( SOMEPATH . '/target.doc', $new_content );
None of them doesn't work. Code runs without any exceptions, but target.doc is the same as source.doc. Replacement not performs.
I've tried a lot of different reciepts, such as regular expression modificators, iconv and so on, but nothing helps.
var_dump
of $content
shows raw structure of source.doc that is full of unusual characters and as I suppose some of it stops str_replace
or preg_replace
scanning. Can't figure out which char is it and what should I do if I'll find it.
var_dump
of $new_content
is identical to $content.
Thanks forward for any help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您有一个 DOCX 文件,您需要替换其中的某些内容,它基本上是一个压缩的 xml 存档。
以下示例介绍了如何在 DOCX 文件中将单词“Microsoft”替换为“Openoffice”。
希望这有帮助!
If you have a DOCX file you need to replace something in, its basically a zipped up xml archive.
Here's an example on how to replace the word "Microsoft" with "Openoffice" in a DOCX file.
Hope this helps!
我认为这就是您正在寻找的:) http://phpword.codeplex.com/ 因为文档文件不是普通的文本文件(尝试用记事本打开一个......你就会明白我的意思)
I think this is what you are looking for :) http://phpword.codeplex.com/ since doc files are not ordinary text files (try opening one with notepad..you'll get my point)