これが簡単な質問かどうかはわかりませんが、これまでのところ答えを見つけることができませんでした. タグがhtmlに変換されたときにタブを正しく保持していないように見えるため、.docxファイルを引き離し、すべての<w:tab />
タグを<w:ind />
タグに置き換える正規表現を作成しようとしています。<w:tab>
私はPHPで作業していますが、これまでのところ、正しく行うために必要なことを行う正規表現を書くことに成功していません.
問題は、ここで単純な検索と置換機能を実行できないことです。タグを削除し、最も近い開始タグと終了タグ内に<w:tab />
タグを挿入する必要があります。<w:ind />
<w:rPr></w:rPr>
サンプルの 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);
このような機能はありますが、問題は検索がグローバルすぎることです。貪欲にならないように指定していますが、返される結果には、本来よりもはるかに多くのコンテンツが含まれています。これを改善するための最適な方法を誰かが提案できますか? 前もって感謝します!