• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/library.php
  • Класс: BitrixImConnectorLibrary
  • Вызов: Library::getNameFileIsContentDisposition
static function getNameFileIsContentDisposition($data)
{
	$fileName = '';

	if ($data !== '')
	{
		$data = rawurldecode($data);
		if (preg_match("'filename*=([^;]+)'i", $data, $res))
		{
			[$charset, $str] = preg_split("/'[^']*'/", trim($res[1], '"'));
			$fileName = Encoding::convertEncoding($str, $charset, SITE_CHARSET);
		}
		else if (preg_match("'filename=([^;]+)'i", $data, $res))
		{
			$fileName = trim($res[1], '"');
		}
		else if (preg_match("'filename*0=([^;]+)'i", $data, $res))
		{
			$fileName = trim($res[1], '"');

			$i = 0;
			while (preg_match("'filename*".(++$i)."=([^;]+)'i", $data, $res))
			{
				$fileName .= trim($res[1], '"');
			}
		}
		else if (preg_match("'filename*0*=([^;]+)'i", $data, $res))
		{
			$str = trim($res[1], '"');

			$i = 0;
			while (preg_match("'filename*".(++$i)."*?=([^;]+)'i", $data, $res))
			{
				$str .= trim($res[1], '"');
			}

			[$charset, $str] = preg_split("/'[^']*'/", $str);
			if (!empty($str))
			{
				$fileName = $charset ?  Encoding::convertEncoding($str, $charset, SITE_CHARSET) : $str;
			}
		}
	}

	return $fileName;
}