2015-06-08 6 views
1

Я хотел бы написать арабский текст внутри текстового файла с php, но я не нашел, как писать текст справа налево. Я нашел эту статью understanding-bidirectional-text Где они объясняют, что я должен добавить перед моей строкой символ Unicode U + 202E и U + 202C после. Но я не знаю, как преобразовать этот символ Юникода в строку в php. Я пробовал что-то вроде этого $content = "\u{202E}".$content."\u{202C}", но это не сработало.Напишите текст справа налево в текстовом файле с php

ответ

2

Да, если ваш клиент не поддерживает двунаправленное поведение, вам необходимо применить силу. Это часто происходит в среде обычного текста. Существует простой способ создания таких текстов в PHP, используя следующие функции:

function utf8 ($codepoint) { 
    // 200E = ltr mark 
    // 200F = rtl mark 
    return json_decode('"\u'.$codepoint.'"'); 
} 

function rtl ($string) { 
    return utf8('200f').$string.utf8('200e'); 
} 

function ltr ($string) { 
    return utf8('200e').$string.utf8('200f'); 
} 

Первая функция переводит юникода UTF-8 элемент кода. Вторая функция возвращает строку с метками справа налево, а третья возвращает строку с левыми к-правым метками. Исходное направление восстанавливается в обоих случаях в конце строки.

По-прежнему зависит от того, будет ли визуализировано направление письма или нет.