A WordPress-centric search engine for devs and theme authors



_sanitize_text_fields ›

Since4.7.0
Deprecatedn/a
_sanitize_text_fields ( $str, $keep_newlines = false )
Access:
  • private
Parameters: (2)
  • (string) $str String to sanitize.
    Required: Yes
  • (bool) $keep_newlines optional Whether to keep newlines. Default: false.
    Required: No
    Default: false
Returns:
  • (string) Sanitized string.
Defined at:
Codex:

Internal helper function to sanitize a string from user input or from the db



Source

function _sanitize_text_fields( $str, $keep_newlines = false ) {
	$filtered = wp_check_invalid_utf8( $str );

	if ( strpos($filtered, '<') !== false ) {
		$filtered = wp_pre_kses_less_than( $filtered );
		// This will strip extra whitespace for us.
		$filtered = wp_strip_all_tags( $filtered, false );

		// Use html entities in a special case to make sure no later
		// newline stripping stage could lead to a functional tag
		$filtered = str_replace("<\n", "&lt;\n", $filtered);
	}

	if ( ! $keep_newlines ) {
		$filtered = preg_replace( '/[\r\n\t ]+/', ' ', $filtered );
	}
	$filtered = trim( $filtered );

	$found = false;
	while ( preg_match('/%[a-f0-9]{2}/i', $filtered, $match) ) {
		$filtered = str_replace($match[0], '', $filtered);
		$found = true;
	}

	if ( $found ) {
		// Strip out the whitespace that may now exist after removing the octets.
		$filtered = trim( preg_replace('/ +/', ' ', $filtered) );
	}

	return $filtered;
}