mb_encode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_encode_numericentityКодирует символы в числовые HTML-сущности

Описание

mb_encode_numericentity(
    string $string,
    array $map,
    ?string $encoding = null,
    bool $hex = false
): string

Функция преобразовывает символы строки string в числовые HTML-сущности на основе диапазонов кодовых точек.

Список параметров

string

Кодируемая строка (string).

map

Параметр map принимает массив, который определяет диапазоны кодовых точек для преобразования.

encoding

Параметр encoding указывает кодировку символов. При пропуске параметра или передаче значения null функция интерпретирует символы в предустановленной кодировке модуля.

hex

Параметр указывает, возвращать ли HTML-сущность в шестнадцатеричной нотации; иначе числовая ссылка на символ возвращается в десятичной нотации.

Возвращаемые значения

Функция возвращает преобразованную строку (string).

Ошибки

Функция теперь выбрасывает ошибку ValueError, если список map содержит значения кроме int.

Список изменений

Версия Описание
8.4.0 Функция mb_encode_numericentity() теперь выбрасывает ошибку ValueError, если список map содержит значения кроме int.
8.0.0 Параметр encoding теперь принимает значение null.

Примеры

Пример #1 Пример формата для установки параметра map

<?php

$convmap
= array(
int start_code1, int end_code1, int offset1, int mask1,
int start_code2, int end_code2, int offset2, int mask2,
// ........
int start_codeN, int end_codeN, int offsetN, int maskN
);
// Значения start_codeN и end_codeN определяют диапазон кодовых точек Юникода.
// К кодовой точке исходного символа добавляется смещение offsetN и выполняется побитовая операция 'И' со значением маски maskN,
// а полученное значение затем преобразовывается в числовую HTML-сущность.

?>

Пример #2 Пример кодирования символа функцией mb_encode_numericentity()

<?php

$str
= "aAæÆあア𩸽";

/* Преобразование каждого UTF8-символа длиной до 4 байтов в числовую HTML-сущность */
$convmap = [0, 0x1FFFFF, 0, 0x10FFFF];
var_dump(mb_encode_numericentity($str, $convmap, "utf8"));

/* Преобразование только 2- и 4-байтовых UTF8-символов в числовую HTML-сущность */
$convmap = [
0x80, 0x7FF, 0, 0x10FFFF,
0x10000, 0x1FFFFF, 0, 0x10FFFF,
];

var_dump(mb_encode_numericentity($str, $convmap, "utf8"));

?>

Результат выполнения приведённого примера:

string(46) "&#97;&#65;&#230;&#198;&#12354;&#12450;&#40509;"
string(28) "aA&#230;&#198;あア&#40509;"

Смотрите также