Цель состоит в том, чтобы получить точное количество слов для файла Microsoft Word. У нас есть сервер Windows, на котором работает Apache и PHP. На этом компьютере запущена веб-служба, которая в основном получает все содержимое документа и пропускает содержимое через preg_match_all("/\S+/", $string, $matches); return count($matches[0]);
. Работает довольно хорошо, но не совсем точно. Итак, мы написали следующий макрос:
Sub GetWordCountBreakdown()
Dim x As Integer
Dim TotalWords As Long
Dim FieldWords As Long
TotalWords = ActiveDocument.ComputeStatistics(wdStatisticWords)
For x = 1 To ActiveDocument.Fields.Count
If ActiveDocument.Fields.Item(x).Result.ComputeStatistics(wdStatisticWords) > 25 Then
FieldWords = FieldWords + ActiveDocument.Fields.Item(x).Result.ComputeStatistics(wdStatisticWords)
End If
Next x
MsgBox (TotalWords & " - " & FieldWords & " = " & TotalWords - FieldWords)
End Sub`
Когда я запускаю этот макрос в Word, он дает мне аккуратное маленькое окно с предупреждением, подсчитывающее все слова и ссылки в документе. Я не уверен, как вернуть эти значения в PHP, чтобы мой веб-сервис мог передать их мне.
Обновление: Мне удалось просто переписать этот макрос в PHP и получить правильный счетчик слов. В основном:
$word = new COM("Word.Application")
$word->Documents->Open(file);
$wdStatisticWords = 0;
$wordcount = $word->ActiveDocument->ComputeStatistics($wdStatisticWords);
и т.д.