LINUX.ORG.RU

$str = ~ /^=\?(.+?)\?(.+?)\?(.+)\?=$/;

$charset = $1;
$type = $2; # B - base64; Q - quoted print
$string = $3;

дальше, думаю, сообразишь, что с этим делать

friday ★★★
()
Ответ на: комментарий от anonymous

куда подробнее-то? в зависимости от $type подключаешь либо MIME::Base64, либо MIME::QuotedPrint, декодируешь $string соответствующей функцией (подробнее - читай perldoc <module_name>) и переводишь $string из $charset в нужную тебе кодировку

friday ★★★
()
Ответ на: комментарий от friday

теперь появился вопрос как сделать сплит по символу "?" split("?", $str); выдаёт ошибку Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE / at ./test.cgi line 47.

anonymous
()
Ответ на: комментарий от anonymous

юноша, зачем те сплит? тебе дали практически готовый код, вот и используй его. а если тебе не нравится этот вариант, читай Уолла и Фридла.

и вообще, телепаты в отпуске. 47-ю строку в студию

friday ★★★
()
Ответ на: комментарий от friday

т.к. строка выглядит как =?windows-1251?B?wu7w7uH85eLg?= и её надо разбить на отдельные составляющие, а именно "=" "windows-1251" "B?wu7w7uH85eLg" "=", чтоб определить нужно ли её собще декодировать, т.к. она может быть и не закодирована

anonymous
()
Ответ на: комментарий от anonymous

>...надо разбить на отдельные составляющие, а именно "=" "windows-1251" "B?wu7w7uH85eLg" "="...

я же написал, _как_ надо разбивать эту строку. не "=" "windows-1251" "B?wu7w7uH85eLg" "=", а "windows-1251" "B", "wu7w7uH85eLg".

Read the fucking RFC, maafak:-)

friday ★★★
()
Ответ на: комментарий от friday

нет, мне нужно разбить именно так, чтоб можно было понять, закодирована ли вобще строка (если первая и последняя часть строки "=", значит закодировано), она может быть и в обычном виде...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.