/ / OpenTBSの文字列の一部のテキストの色を変更 - php、docx、opentbs、tinybutstrong

OpenTBSの文字列の一部のテキストの色を変更する - php、docx、opentbs、tinybutstrong

私は大きな単語の文書を作成していて、文字列の "part"のテキストの色を変えるだけでいいのです。

私は「似たような質問をいくつかの場所で見つけました。 ここに, ここに そして ここにしかし、私の問題が違うように見えるのは、これらの例のように、段落全体やOpenTBSフィールド全体とは対照的に、文字列の一部だけを着色したいということです。

最初にdocx XMLタグで個々の文字列をラップしようとしましたが、phpがエンティティに変換されていることがわかりました(&gt; これは明らかに無駄でした。 現在、私は「テンプレートスクリプトを使ってテキストの一部をXMLタグでラッピングすることにしました。これは、不正な形式のXML出力になります。 </w:r> 1つの部分文字列から <w:r> 次のサブストリングの

これを正しく行う方法について何かアドバイスはありますか?以下は現在のコードと出力です。

//Function called onmerge. I wrap the portion of string I want to change the text
//colour of with [UNTRANSLATED] and [ENDUNTRANSLATED] manually earlier, and attempt
//to swap them for tags at this point.
function lb($FieldName, &$CurrVal) {
$CurrVal= str_replace("[UNTRANSLATED]", "<w:r><w:rPr><w:color w:val="FF0000"/></w:rPr><w:t>", $CurrVal);
$CurrVal= str_replace("[ENDUNTRANSLATED]", "</w:t></w:r>", $CurrVal);
}

そして出力...

<w:t>
<w:r>
<w:rPr>
<w:color w:val="FF0000" />
</w:rPr>
<w:t>Slaked Lime</w:t>
</w:r>,
<w:r>
<w:rPr>
<w:color w:val="FF0000" />
</w:rPr>
<w:t>Air slaked Lime</w:t>
</w:r>,
[code continues in same style...]

Wordは、2番目のブロックと2番目のブロックの間のエラーにフラグを立てます <w:r> タグはあります。残念ながら、このエラーは美しく記述されていません。


回答:

回答№1は2

上記のコードの問題は、OpenTBSが文字列を1組の文字列に入力することでした。 <w:r><w:t> タグを挿入する前に閉じておく必要があります。 (サラ・ケンプがコメントで述べたように、 <w:t> 安定していないようです。

以下は更新された作業バージョンです。 xml:space="preserve" 間隔を保つためにも追加する必要があります。

//Function called onmerge. I wrap the portion of string I want to change the text
//colour of with [UNTRANSLATED] and [ENDUNTRANSLATED] manually earlier, and attempt
//to swap them for tags at this point.
function lb($FieldName, &$CurrVal) {
$CurrVal= str_replace("[UNTRANSLATED]", "</w:t></w:r><w:r><w:rPr><w:color w:val="FF0000"/></w:rPr><w:t xml:space="preserve">", $CurrVal);
$CurrVal= str_replace("[ENDUNTRANSLATED]", "</w:t></w:r><w:r><w:t xml:space="preserve">", $CurrVal);
}

回答№2の場合は1

私の唯一の提案は、整形式のWord文書を調べて、それに基づいてコードを作成することです。私は基本的な文書を作り、そして行をタイプし、そして単語の色を変えました。それから私はファイル拡張子を zip から docx でXMLを見て word/document.xml。これはWordから直接フォーマットされたものです(フォーマットが適用されています)。

<w:p w:rsidR="00BA3836" w:rsidRDefault="00420636">
<w:r>
<w:t xml:space="preserve">This is some text where </w:t>
</w:r>
<w:r w:rsidRPr="00420636">
<w:rPr>
<w:color w:val="FF0000"/>
</w:rPr>
<w:t>parts</w:t>
</w:r>
<w:r>
<w:t xml:space="preserve"> are red.</w:t>
</w:r>
</w:p>

この文書では、「部分」という単語は赤です。

これまでに行ったように.docxファイルからXMLを抽出し、関連する領域を(TBSタグをそのまま使用して - マージの前に)投稿すると、さらに役立つことがあります。

これを解決するのに非常に近いようですねあなたはパラメータで遊んだか strconv=no