97 lines
2.5 KiB
PHP
97 lines
2.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Safe;
|
||
|
|
||
|
use Safe\Exceptions\IconvException;
|
||
|
|
||
|
/**
|
||
|
* Retrieve internal configuration variables of iconv extension.
|
||
|
*
|
||
|
* @param string $type The value of the optional type can be:
|
||
|
*
|
||
|
* all
|
||
|
* input_encoding
|
||
|
* output_encoding
|
||
|
* internal_encoding
|
||
|
*
|
||
|
* @return mixed Returns the current value of the internal configuration variable if
|
||
|
* successful.
|
||
|
*
|
||
|
* If type is omitted or set to "all",
|
||
|
* iconv_get_encoding returns an array that
|
||
|
* stores all these variables.
|
||
|
* @throws IconvException
|
||
|
*
|
||
|
*/
|
||
|
function iconv_get_encoding(string $type = "all")
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \iconv_get_encoding($type);
|
||
|
if ($result === false) {
|
||
|
throw IconvException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Changes the value of the internal configuration variable specified by
|
||
|
* type to charset.
|
||
|
*
|
||
|
* @param string $type The value of type can be any one of these:
|
||
|
*
|
||
|
* input_encoding
|
||
|
* output_encoding
|
||
|
* internal_encoding
|
||
|
*
|
||
|
* @param string $charset The character set.
|
||
|
* @throws IconvException
|
||
|
*
|
||
|
*/
|
||
|
function iconv_set_encoding(string $type, string $charset): void
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \iconv_set_encoding($type, $charset);
|
||
|
if ($result === false) {
|
||
|
throw IconvException::createFromPhpError();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Performs a character set conversion on the string
|
||
|
* str from in_charset
|
||
|
* to out_charset.
|
||
|
*
|
||
|
* @param string $in_charset The input charset.
|
||
|
* @param string $out_charset The output charset.
|
||
|
*
|
||
|
* If you append the string //TRANSLIT to
|
||
|
* out_charset transliteration is activated. This
|
||
|
* means that when a character can't be represented in the target charset,
|
||
|
* it can be approximated through one or several similarly looking
|
||
|
* characters. If you append the string //IGNORE,
|
||
|
* characters that cannot be represented in the target charset are silently
|
||
|
* discarded. Otherwise, E_NOTICE is generated and the function
|
||
|
* will return FALSE.
|
||
|
*
|
||
|
* If and how //TRANSLIT works exactly depends on the
|
||
|
* system's iconv() implementation (cf. ICONV_IMPL).
|
||
|
* Some implementations are known to ignore //TRANSLIT,
|
||
|
* so the conversion is likely to fail for characters which are illegal for
|
||
|
* the out_charset.
|
||
|
* @param string $str The string to be converted.
|
||
|
* @return string Returns the converted string.
|
||
|
* @throws IconvException
|
||
|
*
|
||
|
*/
|
||
|
function iconv(string $in_charset, string $out_charset, string $str): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \iconv($in_charset, $out_charset, $str);
|
||
|
if ($result === false) {
|
||
|
throw IconvException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|