WP_REST_Attachments_Controller::get_filename_from_disposition
Parses filename from a Content-Disposition header value.
As per RFC6266:
content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
disposition-type = "inline" | "attachment" | disp-ext-type ; case-insensitive disp-ext-type = token
disposition-parm = filename-parm | disp-ext-parm
filename-parm = "filename" "=" value | "filename*" "=" ext-value
disp-ext-parm = token "=" value | ext-token "=" ext-value ext-token = <the characters in token, followed by "*">
Метод класса: WP_REST_Attachments_Controller{}
Хуков нет.
Возвращает
Строку|null. Filename if available, or null if not found.
Использование
$result = WP_REST_Attachments_Controller::get_filename_from_disposition( $disposition_header );
- $disposition_header(string[]) (обязательный)
- List of Content-Disposition header values.
Список изменений
| С версии 4.7.0 | Введена. |
Код WP_REST_Attachments_Controller::get_filename_from_disposition() WP REST Attachments Controller::get filename from disposition WP 6.9.4
public static function get_filename_from_disposition( $disposition_header ) {
// Get the filename.
$filename = null;
foreach ( $disposition_header as $value ) {
$value = trim( $value );
if ( ! str_contains( $value, ';' ) ) {
continue;
}
list( , $attr_parts ) = explode( ';', $value, 2 );
$attr_parts = explode( ';', $attr_parts );
$attributes = array();
foreach ( $attr_parts as $part ) {
if ( ! str_contains( $part, '=' ) ) {
continue;
}
list( $key, $value ) = explode( '=', $part, 2 );
$attributes[ trim( $key ) ] = trim( $value );
}
if ( empty( $attributes['filename'] ) ) {
continue;
}
$filename = trim( $attributes['filename'] );
// Unquote quoted filename, but after trimming.
if ( str_starts_with( $filename, '"' ) && str_ends_with( $filename, '"' ) ) {
$filename = substr( $filename, 1, -1 );
}
}
return $filename;
}