今天碰到一个需求,是校对论文按字数来计算价格,难点就在统计word文档的字数。一开始的想法是直接用一些第三方插件包例如phpword,然后发现文档和源码中并没有相对应的方法。后来我就用phpword提取出文本的内容,再从网上找了一个仿word统计字数的方法。代码如下:
//先试用comoser下载phpword
composer require phpoffice/phpword
//代码中引入
use PhpOffice\PhpWord\IOFactory;
//读一个文件
$file = '/admin/20200523/d99841cf6d7c4e3a729d66409c434b1a.docx';
$sections = IOFactory::load($file)->getSections();
//提取文本内容(过滤掉图片)
$word = '';
foreach($sections as $section) {
$elements = $section->getElements();
foreach($elements as $element) {
if (!method_exists($element, 'getElements')) {
continue;
}
foreach ($element->getElements() as $item) {
if ($item instanceof \PhpOffice\PhpWord\Element\Text) {
$word .= $item->gettext(