UConverter::transcode

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::transcode β€” ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ строку ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ

ОписаниС

public static function UConverter::transcode(
Β Β Β Β string $str,
Β Β Β Β string $toEncoding,
Β Β Β Β string $fromEncoding,
Β Β Β Β ?array $options = null
): string|false

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ строку str ΠΈΠ· ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ fromEncoding Π² toEncoding.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

str

Π‘Ρ‚Ρ€ΠΎΠΊΠ° (string) для прСобразования.

toEncoding

ВрСбуСмая ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

fromEncoding

ВСкущая ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° строки str.

options

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ массив (array), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ:

  • 'to_subst' - подстановочный символ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ вмСсто любого символа строки str, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ Π² toEncoding. Если ΠΊΠ»ΡŽΡ‡ ΡƒΠΊΠ°Π·Π°Π½, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ символ Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку ΠΈΠ»ΠΈ false, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· UTF-8 Π² UTF-16 ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

<?php
$utf8_string
= "\x5A\x6F\xC3\xAB"; // 'ZoΓ«' Π² UTF-8
$utf16_string = UConverter::transcode($utf8_string, 'UTF-16BE', 'UTF-8');
echo
bin2hex($utf16_string), "\n";

$new_utf8_string = UConverter::transcode($utf16_string, 'UTF-8', 'UTF-16BE');
echo
bin2hex($new_utf8_string), "\n";
?>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

005a006f00eb
5a6fc3ab

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 НСдопустимыС символы Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строкС

Если входная строка содСрТит ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ², которая Π½Π΅ являСтся допустимой Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² fromEncoding, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² toEncoding ΠΎΠ½Π° замСняСтся ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Unicode U+FFFD (Π—Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ символ).

<?php
$invalid_utf8_string
= "\xC3"; // нСполная многобайтовая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ UTF-8
$utf16_string = UConverter::transcode($invalid_utf8_string, 'UTF-16BE', 'UTF-8');
echo
bin2hex($utf16_string), "\n";
?>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

fffd

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #3 Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹

Если входная строка содСрТит символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ toEncoding, ΠΎΠ½ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ символом. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ символ зависит ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° 'to_subst'.

<?php
$utf8_string
= "\xE2\x82\xAC"; // € (Π—Π½Π°ΠΊ Π΅Π²Ρ€ΠΎ) Π½Π΅ сущСствуСт Π² ISO 8859-1

// Π—Π°ΠΌΠ΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ISO 8859-1 - "\x1A" (Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒ)
$iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF-8');
echo
bin2hex($iso8859_1_string), "\n";

// ИспользованиС Π² качСствС замСнитСля символа '?' ("\x3F").
$iso8859_1_string = UConverter::transcode(
$utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo
bin2hex($iso8859_1_string), "\n";

// ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ISO 8859-1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ U+FFFD, Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ входная строка Ρ‚Π°ΠΊΠΆΠ΅ замСняСтся Π½Π° to_subst
$invalid_utf8_string = "\xC3"; // нСполная многобайтовая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ UTF-8
$iso8859_1_string = UConverter::transcode(
$invalid_utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo
bin2hex($iso8859_1_string), "\n";
?>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

1a
3f
3f

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • mb_convert_encoding() - ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ строку ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ
  • iconv() - ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ строку ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы