我不確定這是否是一個簡單問題,但至今我一直無法找到答案。我試圖編寫一個正則表達式,將.docx文件拉開,並匹配用<w:ind />
標籤替換所有<w:tab />
標籤,因爲<w:tab>
標籤在轉換爲html時似乎不能正確保存標籤。我正在使用PHP,並且迄今爲止在編寫一個正則表達式時沒有成功,該正則表達式完成我需要的正確操作。我需要匹配組中的所有字符,只要它們不匹配某個詞
問題是,我不能在這裏運行一個簡單的查找和替換功能。我必須刪除<w:tab />
標記,並在最近的開啓和關閉<w:rPr></w:rPr>
標記內注入<w:ind />
標記。
示例XML字符串將是這個樣子:
<w:p w14:paraId="2679030C" w14:textId="4E6FFA99" w:rsidR="00ED4314" w:rsidRPr="00254747" w:rsidRDefault="00ED4314" w:rsidP="00322270">
<w:pPr>
<w:pStyle w:val="NoSpacing" />
<w:spacing w:line="480" w:lineRule="auto" />
<w:jc w:val="both" />
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="24" />
<w:szCs w:val="24" />
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="00254747">
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="24" />
<w:szCs w:val="24" />
</w:rPr>
<w:tab />
<w:t>SOME text</w:t>
</w:r>
<w:r w:rsidR="0003297C">
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="24" />
<w:szCs w:val="24" />
</w:rPr>
<w:t>SOME more text</w:t>
</w:r>
<w:r w:rsidRPr="00254747">
<w:rPr>
<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:cs="Times New Roman" />
<w:sz w:val="24" />
<w:szCs w:val="24" />
</w:rPr>
<w:t>EVEN more text</w:t>
</w:r>
</w:p>
這樣的<w:tab/>
每個實例都需要被移除,然後我會需要向後追蹤到以前<w:rPr>
標籤和注入<w:ind />
標籤在裏面。
繼承人是我迄今爲止:
$content = preg_replace("/<w:rPr>(.*?)<\/w:rPr>(.*?)<w:tab\/>/", "<w:rPr><w:ind w:firstLine=\"720\"/>$1</w:rPr>$2", $content);
這個排序的作品,但問題是我認爲搜索是太全局。即使我指定它不貪婪,它返回給我的結果有更多的內容,然後他們應該。任何人都可以提出一個最佳的方法來完善這個?提前致謝!
你可能想看看XML解析器。 – Jerry