PHP обрезать неожиданное поведение - PullRequest
0 голосов
/ 18 мая 2018

Я использую следующую функцию в PHP для обрезки некоторых нежелательных символов.

$inputString = "आनन्द मठ";
trim(html_entity_decode($inputString), " \t\n\r\0\x0B\xC2\xA0");

Приведенный выше код работает нормально для всех случаев, но в одной входной строке (आनन्द मठ) он преобразует его вआनन्द म�.Это нежелательный �.Также происходит для परेटो- श्रेष्ठ, преобразованного в परेटो- श्रेष्�.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Добавьте заголовок http в ваш php как

header("Content-Type: text/html; charset=ISO-8859-1");

или поместите кодировку в метатег:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
0 голосов
/ 18 мая 2018
trim()

Эта функция использует кодировку ISO-8859.

Вы должны использовать функцию UTF8 (Unicode).Попробуйте эту функцию

function mb_trim($string, $charlist='\\\\s', $ltrim=true, $rtrim=true) 
{ 
    $both_ends = $ltrim && $rtrim; 

    $char_class_inner = preg_replace( 
        array( '/[\^\-\]\\\]/S', '/\\\{4}/S' ), 
        array( '\\\\\\0', '\\' ), 
        $charlist 
    ); 

    $work_horse = '[' . $char_class_inner . ']+'; 
    $ltrim && $left_pattern = '^' . $work_horse; 
    $rtrim && $right_pattern = $work_horse . '$'; 

    if($both_ends) 
    { 
        $pattern_middle = $left_pattern . '|' . $right_pattern; 
    } 
    elseif($ltrim) 
    { 
        $pattern_middle = $left_pattern; 
    } 
    else 
    { 
        $pattern_middle = $right_pattern; 
    } 

    return preg_replace("/$pattern_middle/usSD", '', $string) ); 
} 
...