gpt4 book ai didi

PHP 编辑 Microsoft Word 文档 str_replace 和 preg_replace 不起作用

转载 作者:行者123 更新时间:2023-12-04 15:43:41 25 4
gpt4 key购买 nike

假设,我有 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.docsource.doc 相同。替换不执行。

我尝试了很多不同的收据,例如正则表达式修饰符、iconv 等等,但没有任何帮助。

$content

var_dump 显示了 source.doc 的原始结构,其中充满了不寻常的字符,我想其中一些会停止 str_replacepreg_replace 扫描。无法弄清楚它是哪个字符,如果找到它我该怎么办。

$new_contentvar_dump 与 $content 相同。

感谢转发任何帮助!

最佳答案

如果您有一个 DOCX 文件,您需要替换其中的内容,它基本上是一个压缩的 xml 存档。下面是一个关于如何在 DOCX 文件中用“Openoffice”替换单词“Microsoft”的示例。

$zip = new ZipArchive;
//This is the main document in a .docx file.
$fileToModify = 'word/document.xml';
$wordDoc = "Document.docx";

if ($zip->open($wordDoc) === TRUE) {
//Read contents into memory
$oldContents = $zip->getFromName($fileToModify);
//Modify contents:
$newContents = str_replace('Microsoft', 'Openoffice', $oldContents);
//Delete the old...
$zip->deleteName($fileToModify);
//Write the new...
$zip->addFromString($fileToModify, $newContents);
//And write back to the filesystem.
$return =$zip->close();
If ($return==TRUE){
echo "Success!";
}
} else {
echo 'failed';
}

希望这对您有所帮助!

关于PHP 编辑 Microsoft Word 文档 str_replace 和 preg_replace 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com