在PHPWord模板中正确插入RTL文本

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在PHPWord模板中正确插入RTL文本脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 PHPWord模板处理器在模板中插入一些文本.

所有标签都是英文,字样模板是LTR格式.

以下是单词模板中的一行:

User Name: ${name}

以下是替换值的PHP行:

$template->setValue('name',$user->name);

这句话是双向的.该标签是英文(LTR),用户名始终是阿拉伯语(RTL).

以下是document.XMl中生成代码行,在解压缩文件文件后:

<w:r><w:rPR><w:b/><w:bCs/><w:lang w:val="en-US" w:bidi="ar-EG"/></w:rPr><w:t>User Name:</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字符串.
根据 this有两种方法来修复PHPword,我试过两者.这是正确的:

在第150行,Shared / String.PHP中:

更换

public static function IsUTF8($value = '') {
    return utf8_encode(utf8_decode($value)) === $value;
}

public static function IsUTF8($value = '') {
    return mb_check_encoding($value,"UTF-8");
}

然后,如果你这样做

$grep -rn "utf8_encode" .

在项目根目录下,您将找到使用utf8_encode的所有行.你会看到行

$linkSrc = utf8_encode($linkSrc); //$linkSrc = $linkSrc;

$givenText = utf8_encode($text); //$givenText = $text;

您可以简单删除utf8_encode,如注释中所示.

脚本宝典总结

以上是脚本宝典为你收集整理的在PHPWord模板中正确插入RTL文本全部内容,希望文章能够帮你解决在PHPWord模板中正确插入RTL文本所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。