Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки с mb_encode_mimeheader(), ен работает скрипт 
:(
    Опции темы
Matematik
Дата 13.2.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Простой скрипт, должен построчно закодировать о обе стороны.
Не работает ни в одну сторону ни в другую, выдает неправильные значения.
"привет" -> "=?KOI8-R?B?Pz8/Pz8/?="
Код

<?php
  $memowin = '';
  $memomail = '';
  //   =?koi8-r?B?x8/Mz9PP18HMy8E=?=
  if (isset($_REQUEST['tomail']))
  {
    $memowin = $_REQUEST['memowin'];
    $lines = explode("\r\n", $memowin);
    foreach ($lines as $zzz) {
      $memomail = $memomail."\r\n".mb_encode_mimeheader(convert_cyr_string($zzz, 'windows-1251', 'koi8-r'), "koi8-r", "B");
    }    
  } else
  {
    $memomail = $_REQUEST['memomail'];
    $lines = explode("\r\n", $memomail);
    $re = '/=\?(.*?)\??\?/';
    foreach ($lines as $zzz) {
      if (preg_match($re, $zzz, $arr)) {
        $cnv = $arr[1];
      }
        else
      {
        $cnv = 'windows-1251';
      };
      $memowin = $memowin."\r\n".convert_cyr_string(mb_decode_mimeheader($zzz), $cnv, 'windows-1251');
    }      
  }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Преобразовани заголовка</title>
</head>

<body>
<form id="form1" name="form1" method="get" action="">
  <table width="100%" border="0">
    <tr>
      <td align="right"><textarea name="memowin" cols="50" rows="20" id="memowin"><?php echo $memowin; ?></textarea></td>
      <td align="center" valign="bottom"><input name="tomail" type="submit" id="tomail" value="    &gt;&gt;&gt;    " /><br /><br /><input name="towin" type="submit" id="towin" value="    &lt;&lt;&lt;    " /></td>
      <td align="left"><textarea name="memomail" cols="50" rows="20" id="memomail"><?php echo $memomail; ?></textarea></td>
    </tr>
  </table>
</form>
</body>
</html>


ЗЫ
хост на fatal.ru

Это сообщение отредактировал(а) Matematik - 13.2.2007, 12:30
PM MAIL WWW ICQ   Вверх
GZep
Дата 13.2.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



А разве страница может содержать одновременно 2 кодировки?


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Matematik
Дата 13.2.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Цитата(GZep @  13.2.2007,  17:59 Найти цитируемый пост)
А разве страница может содержать одновременно 2 кодировки? 

При чем тут это?
Может, но отображаться будет только одна smile


Это сообщение отредактировал(а) Matematik - 13.2.2007, 21:02
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 13.2.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Читай мануал функции convert_cyr_string.

Цитата(Matematik @  13.2.2007,  12:10 Найти цитируемый пост)
Не работает ни в одну сторону ни в другую, выдает неправильные значения.

А зачем? Что вообще надо-то?
PM ICQ   Вверх
Matematik
Дата 14.2.2007, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Неправильно работает (выдает не тот результат который я ожидаю) ф-я mb_encode_mimeheader()
Код

<?php echo mb_encode_mimeheader('привет','windows-1251','B'); ?>

Как я понимаю она должна преобразовать слово "привет" в строку "=?windows-1251?B?7/Do4uXy?=" но этого не происходит.
Вот я и спрашиваю что я не так делаю?



Это сообщение отредактировал(а) Matematik - 14.2.2007, 01:44
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 14.2.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Matematik, покажи что у тебя выводит этот код:
Код

<?php echo mb_encode_mimeheader('привет','windows-1251','B'); ?>



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Matematik
Дата 14.2.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Цитата(mishaSL @ 14.2.2007,  20:22)
Matematik, покажи что у тебя выводит этот код:
Код

<?php echo mb_encode_mimeheader('привет','windows-1251','B'); ?>

Код

Привет
=?Windows-1251?B?Pz8/Pz8/?=

PM MAIL WWW ICQ   Вверх
mishaSL
Дата 15.2.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Matematik, работает правильно. 

В строке 10 замени:
Код

mb_encode_mimeheader(convert_cyr_string($zzz, 'windows-1251', 'koi8-r'), "koi8-r", "B")

на
Код

mb_encode_mimeheader(convert_cyr_string($zzz, 'w', 'k'), "koi8-r", "B")


и при декодировании аналогично.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Matematik
Дата 15.2.2007, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: нет
Всего: 50



Дело не в convert_cyr_string(), оно работает как положено.
Этот код выдает
Код

<?php echo mb_encode_mimeheader('привет','windows-1251','B'); ?>

Строку
Код

=?Windows-1251?B?Pz8/Pz8/?=

А должен (проверил через OE)
Код

=?windows-1251?B?7/Do4uXy?=

 smile 
Не представляю где косяк! Уже забил и написал свой код, но просто сам факт интересует,  почему неожиданный результат!

Это сообщение отредактировал(а) Matematik - 15.2.2007, 23:22
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0654 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.