summaryrefslogtreecommitdiff
path: root/vendor/thecodingmachine/safe/generated/iconv.php
blob: 44cf96ab844acb6c0b4198237b465e67bc4e159c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?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;
}