PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mb_convert_case> <Multibyte String Functions
Last updated: Fri, 22 Aug 2008

view this page in

mb_check_encoding

(PHP 4 >= 4.4.3, PHP 5 >= 5.1.3)

mb_check_encodingCheck if the string is valid for the specified encoding

Descripción

bool mb_check_encoding ([ string $var [, string $encoding ]] )

Checks if the specified byte stream is valid for the specified encoding. It is useful to prevent so-called "Invalid Encoding Attack".

Lista de parámetros

var

The byte stream to check. If it is omitted, this function checks all the input from the beginning of the request.

encoding

The expected encoding.

Valores retornados

Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo.



add a note add a note User Contributed Notes
mb_check_encoding
Olexa Riznyk
12-Jul-2007 11:53
This function returns true incorrectly sometimes (at least when internal encoding is UTF-8 and encoding being checked for is Windows-1251, and PHP version 4.4.4 on FreeBSD 6.2 STABLE). This bug was not answered in bug reporting yet, so here is a workaround:

Instead of checking for this:

<?php

mb_check_encoding
($var, $destination_encoding)

?>

check for this:

<?php

mb_check_encoding
($var, $destination_encoding) && mb_substr_count($var, '?', $source_encoding) == mb_substr_count(mb_convert_encoding($var, $destination_encoding, $source_encoding), '?', $destination_encoding)

?>

The idea is to count question mark characters ('?') in original value and converted value, because mb_convert_encoding function uses question marks to substitute characters that are not valid in destination encoding.

mb_convert_case> <Multibyte String Functions
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites