wpcf7_antiscript_file_name() │ CF7 1.0

Converts a file name to one that is not executable as a script.

Хуков нет.

Возвращает

string. Converted file name.

Использование

wpcf7_antiscript_file_name( $filename );
$filename(строка) (обязательный)
File name.

Код wpcf7_antiscript_file_name() CF7 6.2.4.1

function wpcf7_antiscript_file_name( $filename ) {
	$filename = wp_scrub_utf8( $filename );
	$filename = wpcf7_strip_whitespaces( $filename );
	$filename = wp_basename( $filename );

	// Apply part of protection logic from sanitize_file_name().
	$filename = str_replace(
		array(
			'?', '[', ']', '/', '\\', '=', '<', '>', ':', ';', ',', "'", '"',
			'&', '$', '#', '*', '(', ')', '|', '~', '`', '!', '{', '}',
			'%', '+', '’', '«', '»', '”', '“', chr( 0 )
		),
		'',
		$filename
	);

	$whitespaces = '\x09-\x0D\x20\xA0\x{1680}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}\x{FEFF}';

	$filename = preg_replace(
		sprintf( '/[%s-]+/u', $whitespaces ), '-', $filename
	);

	$filename = preg_replace( '/[\pC\pZ]+/iu', '', $filename );

	$parts = explode( '.', $filename );

	if ( count( $parts ) < 2 ) {
		return $filename;
	}

	$ext_safelist = wpcf7_file_extension_safelist();

	$filename = array_shift( $parts );
	$extension = array_pop( $parts );

	foreach ( $parts as $part ) {
		if ( ! in_array( strtolower( $part ), $ext_safelist, true ) ) {
			$filename .= '.' . $part . '_';
		} else {
			$filename .= '.' . $part;
		}
	}

	if ( ! in_array( strtolower( $extension ), $ext_safelist, true ) ) {
		$filename .= '.' . $extension . '_.txt';
	} else {
		$filename .= '.' . $extension;
	}

	return $filename;
}