假设我有MSWord文件source.doc,其中包含下一个内容“Microsoft Word文件的内容”。 例如,我想通过PHP打开它,并将“Microsoft”替换为“Openoffice”,并将结果保存到result.doc。 下面是使用preg_replace
代码:PHP编辑Microsoft Word文档str_replace和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相同。替换不执行。
我已经尝试了很多不同的reciepts,比如正则表达式修饰符,iconv等,但没有什么帮助。
$content
的显示var_dump
source.doc即充满不寻常的字符和作为我想一些它停止str_replace
或preg_replace
扫描的原始结构。无法弄清楚它是哪一个字符,如果我能找到它,该怎么办。
var_dump
of $new_content
与$ content相同。
感谢您的帮助!
MS Word将其文件以压缩格式保存,因此如果不先解压缩,就无法查看或编辑内容。但即使你这样做,你也必须知道文件格式的细节(有几种),并且不能保证页面上的文字被保存为文件中的连续字符。 – Spudley 2011-05-18 14:07:30