我使用
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,我试过两者.这是正确的:
原文链接:https://www.f2er.com/php/132081.html根据 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,如注释中所示.