目的是爲Microsoft Word文件獲取準確的字數。我們有一臺運行Apache和PHP的Windows服務器。在該機器上運行的Web服務基本上獲取文檔的所有內容,並通過preg_match_all("/\S+/", $string, $matches); return count($matches[0]);
運行內容。工作得很好,但它並不準確。因此,我們寫了下面的宏:將事情從Word宏返回到PHP
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,以便我的web服務可以將它們傳回給我。
更新:我能夠在PHP中重寫這個宏,並獲得正確的wordcount。基本上是:
$word = new COM("Word.Application")
$word->Documents->Open(file);
$wdStatisticWords = 0;
$wordcount = $word->ActiveDocument->ComputeStatistics($wdStatisticWords);
等
此外,爲什麼您當前的系統不正確? – JakeSteam 2011-03-09 20:30:11
我只想在主文檔中使用文本,而不是任何註釋或腳註。如果我做'$ content = $ word-> ActiveDocument-> Content;'來獲取文檔的內容,它會將所有東西都看作一個長字符串,因此是不正確的。 – Vic 2011-03-09 20:43:16