Напишите текст справа налево в текстовом файле с php

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

1 ответ

Решение

Да, если ваш клиент не поддерживает двунаправленное поведение, вам необходимо применить силу. Это часто происходит в текстовых средах. Существует простой способ создания таких текстов в 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');
}

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

От клиента все еще зависит, будет ли визуализировано направление письма.

Другие вопросы по тегам