$maxValueLength =
$this->
getMaxLineLength() - \
strlen($name.'=*N"";'
) - 1;
$firstLineOffset = 0;
// If it's not already a valid parameter value...
if (!
preg_match('/^'.self::TOKEN_REGEX.'$/D',
$value)) { // TODO: text, or something else??
// ... and it's not ascii
if (!
preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D',
$value)) { $encoded = true;
// Allow space for the indices, charset and language
$maxValueLength =
$this->
getMaxLineLength() - \
strlen($name.'*N*="";'
) - 1;
$firstLineOffset = \
strlen($this->
getCharset()."'".
$this->
getLanguage()."'"
);
} if (\
in_array($name,
['name', 'filename'
], true
) && 'form-data' ===
$this->
getValue() && 'content-disposition' ===
strtolower($this->
getName()) &&
preg_match('//u',
$value)) { // WHATWG HTML living standard 4.10.21.8 2 specifies:
// For field names and filenames for file fields, the result of the
// encoding in the previous bullet point must be escaped by replacing
// any 0x0A (LF) bytes with the byte sequence `%0A`, 0x0D (CR) with `%0D`
// and 0x22 (") with `%22`.
// The user agent must not perform any other escapes.
$value =
str_replace(['"', "\r", "\n"
],
['%22', '%0D', '%0A'
],
$value);