我正在使用PHPWord模板处理器在模板中插入一些文本
单词模板的格式为LTR,因为所有标签均为英文
以下是word模板中的行:
用户名:${Name}
以下是替换该值的PHP行:
$template->;setValue('name',$user->;name);
这个句子是双向的。标签为英语(LTR),用户名始终为阿拉伯语(RTL)
以下是解压缩word文件后在document.xml中生成的代码行:
<;w:r>&书信电报;w:rPr>&书信电报;w:b/>&书信电报;w:bCs/>&书信电报;w:lang w:val=“en-US”w:bidi=“ar-EG”/></w:rPr>&书信电报;w:t>;用户名:</w:t></w:r>&书信电报;w:r>&书信电报;w:rPr>&书信电报;w:lang w:val=“en-US”w:bidi=“ar-EG”/></w:rPr>&书信电报;w:t xml:space=“preserve”>;عموهشام</w:t>&书信电报;w:tab/></w:r>;
替换的文本在LibreOffice中正确显示为RTL,但在Microsoft Word中显示为LTR(反转)
如何使其在Microsoft Word中正确显示(RTL)
您刚开始做了错误的操作,更正PHPword以使用UTF-8字符串。
根据这一点,修复PHPword有两种方法,我尝试了两种方法。正确的答案是:
在Shared/String.php的第150行:
替换
公共静态函数IsUTF8($value=''){
返回utf8_编码(utf8_解码($value))==$value;
}
与
公共静态函数IsUTF8($value=''){
返回mb_校验_编码($value,“UTF-8”);
}
那么,如果你这样做了
$grep-rn“utf8\u编码”。
在项目根目录中,您将找到使用utf8\u encode的所有行。你会看到像这样的线条
$linkSrc=utf8\u编码($linkSrc)//$linkSrc=$linkSrc;
$givenText=utf8\u编码($text)//$givenText=$text;
只需删除注释中所示的utf8\u编码即可