wp_check_invalid_utf8

Definition:
function wp_check_invalid_utf8( $string, $strip = false ) {}

Checks for invalid UTF8 in a string.

Parameters

  • string $string: The text which is to be checked.
  • boolean $strip: Optional. Whether to attempt to strip out invalid UTF8. Default is false.

Return values

returns:The checked text.

Source code

function wp_check_invalid_utf8( $string, $strip = false ) {

	$string = (string) $string;



	if ( 0 === strlen( $string ) ) {

		return '';

	}



	// Store the site charset as a static to avoid multiple calls to get_option()

	static $is_utf8;

	if ( !isset( $is_utf8 ) ) {

		$is_utf8 = in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) );

	}

	if ( !$is_utf8 ) {

		return $string;

	}



	// Check for support for utf8 in the installed PCRE library once and store the result in a static

	static $utf8_pcre;

	if ( !isset( $utf8_pcre ) ) {

		$utf8_pcre = @preg_match( '/^./u', 'a' );

	}

	// We can't demand utf8 in the PCRE installation, so just return the string in those cases

	if ( !$utf8_pcre ) {

		return $string;

	}



	// preg_match fails when it encounters invalid UTF8 in $string

	if ( 1 === @preg_match( '/^./us', $string ) ) {

		return $string;

	}



	// Attempt to strip the bad chars if requested (not recommended)

	if ( $strip && function_exists( 'iconv' ) ) {

		return iconv( 'utf-8', 'utf-8', $string );

	}



	return '';

}

3465

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: