加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:42:07 所属栏目:PHP教程 来源:网络整理
导读:我使用 PHPWord模板处理器在模板中插入一些文本. 所有标签都是英文,字样模板是LTR格式. 以下是单词模板中的一行: User Name: ${name} 以下是替换值的PHP行: $template-setValue('name',$user-name); 这句话是双向的.该标签是英文(LTR),用户名始终是阿拉伯
我使用 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,如注释中所示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读