>>Транслит текста (содержымого) емейла (как реализовать?)

Статус
В этой теме нельзя размещать новые ответы.

biznesoft

Постоялец
Регистрация
11 Фев 2008
Сообщения
509
Реакции
123
Вот што я хочю реализовать, но мне нужна Ваша помощь в даном вопросе.
Есть php+Msql (смарти шаблонизатор) скрипт , При регистрацыи нового пользователя на сайте, новому пользователю на емейл отправляетса сообщение (о том што он зареген там то там, ево даные и тд..).
Ето все осуществляетса с помощи функцыи:
PHP:
$smarty_mail->assign( "content", $content );
	$html = $smarty_mail->fetch( "шаблон.txt" );

	/*$res = ss_mail( CONF_Reg, Reg2." номер ".$ID,
				$html, 
				"From: \"".CONF_SITE_NAME."\"<".CONF_GENERAL_EMAIL.">\n".
					stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <".
					CONF_GENERAL_EMAIL.">" );*/
	$res = ss_mail( CONF_Reg, '=?'.DEFAULT_CHARSET.'?B?'.base64_encode(STRING_ORDER." номер ".$rID).'?=',
				$html, 
				"From: \"".'=?'.DEFAULT_CHARSET.'?B?'.base64_encode(CONF_SHOP_NAME).'?='."\"<".CONF_GENERAL_EMAIL.">\n".
					stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <".
					CONF_GENERAL_EMAIL.">" );
}

Содержание шаблона:
PHP:
{$smarty.const.TABLE_CUSTOMER}: {$customer_firstname} {$customer_lastname}
{$smarty.const.CUSTOMER_EMAIL} {$customer_email}
{section name=i loop=$customer_add_fields}
{$customer_add_fields[i].reg_field_name}: {$customer_add_fields[i].reg_field_value}
{/section}
{$smarty.const.ADMIN_IP_ADDRESS}: {$customer_ip}
{$smarty.const.STRING_ORDER_TIME}: {$order_time}
{$smarty.const.STRING_CUSTOMER_COMMENTS}: {$customer_comments}

Каким образом сделать транслитерацию содержымого которое будет отправляетса на емейл пользователю, тоисть штоб пользователю на емейл пришло письмо а текст в нем транслитом.

Я так понимаю нужно написать функцию которая обработает даные и переведет их на транслит, а вот как сделать на етом конкретном примере?
 
Не верю что это ты писал, если ты сам в своём коде не знаешь где что добавить....

Пример 1 без трансляции заголовка письма:
PHP:
function totranslit($var) {
 $NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
 $NpjLettersTo   = "abvgdeziklmnoprstufcyi";
 $NpjBiLetters = array(        "й" => "jj", "ё" => "jo", "ж" => "zh", "х" => "kh", "ч" => "ch",        "ш" => "sh", "щ" => "shh", "э" => "je", "ю" => "ju", "я" => "ja",       "ъ" => "", "ь" => "", "ї" => "yi", "є" => "ye",                               );
 $NpjCaps  = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
 $NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";
 $var = str_replace(".php", "", $var);
 $var = trim(strip_tags($var));
 $var = preg_replace( "/\s+/ms", "-", $var );
 $var = strtr( $var, $NpjCaps, $NpjSmall );
 $var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
 $var = strtr( $var, $NpjBiLetters );
 $var = preg_replace("/[^a-z0-9\_\-.]+/mi", "", $var);
 $var=preg_replace('#[\-]+#i', '-', $var);
 $var = strtolower ( $var );
 if (strlen($var) > 50) {
   $var = substr ($var, 0, 50);  			
   if (($temp_max = strrpos($var, '-')))  $var = substr ($var, 0, $temp_max);  	  
 }
 return $var; 
} 

$smarty_mail->assign( "content", $content ); 
    $html = $smarty_mail->fetch("шаблон.txt");

    /*$res = ss_mail( CONF_Reg, Reg2." номер ".$ID, 
                $html,  
                "From: \"".CONF_SITE_NAME."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" );*/ 
    $res = ss_mail( CONF_Reg, '=?'.DEFAULT_CHARSET.'?B?'.base64_encode(STRING_ORDER." номер ".$rID).'?=', 
                totranslit($html),  
                "From: \"".'=?'.DEFAULT_CHARSET.'?B?'.base64_encode(CONF_SHOP_NAME).'?='."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" ); 
}

Пример 2 с трансляции заголовка письма:
PHP:
function totranslit($var) {
 $NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
 $NpjLettersTo   = "abvgdeziklmnoprstufcyi";
 $NpjBiLetters = array(        "й" => "jj", "ё" => "jo", "ж" => "zh", "х" => "kh", "ч" => "ch",        "ш" => "sh", "щ" => "shh", "э" => "je", "ю" => "ju", "я" => "ja",       "ъ" => "", "ь" => "", "ї" => "yi", "є" => "ye",                               );
 $NpjCaps  = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
 $NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";
 $var = str_replace(".php", "", $var);
 $var = trim(strip_tags($var));
 $var = preg_replace( "/\s+/ms", "-", $var );
 $var = strtr( $var, $NpjCaps, $NpjSmall );
 $var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
 $var = strtr( $var, $NpjBiLetters );
 $var = preg_replace("/[^a-z0-9\_\-.]+/mi", "", $var);
 $var=preg_replace('#[\-]+#i', '-', $var);
 $var = strtolower ( $var );
 if (strlen($var) > 50) {
   $var = substr ($var, 0, 50);  			
   if (($temp_max = strrpos($var, '-')))  $var = substr ($var, 0, $temp_max);  	  
 }
 return $var; 
} 

$smarty_mail->assign( "content", $content ); 
    $html = $smarty_mail->fetch("шаблон.txt");

    /*$res = ss_mail( CONF_Reg, Reg2." номер ".$ID, 
                $html,  
                "From: \"".CONF_SITE_NAME."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" );*/ 
    $res = ss_mail( CONF_Reg, '=?'.DEFAULT_CHARSET.'?B?'.base64_encode(totranslit(STRING_ORDER." номер ".$rID)).'?=', 
                totranslit($html),  
                "From: \"".'=?'.DEFAULT_CHARSET.'?B?'.base64_encode(CONF_SHOP_NAME).'?='."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" ); 
}
 
Спасибо за помощь, но к сожелению не работает, если дописать етот код ( в двух вариантах). Письмо на мейл приходит в кирилице (содержание)
Я не писал што скрипт ето самопис, ето не самопис, ето шопскрипт.
Я просто нипасал функц. кторая отвечает за ето.

Я так понимаю:
што ета функция
PHP:
$smarty_mail->assign( "content", $content ); 
    $html = $smarty_mail->fetch("шаблон.txt");

    /*$res = ss_mail( CONF_Reg, Reg2." номер ".$ID, 
                $html,  
                "From: \"".CONF_SITE_NAME."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" );*/ 
    $res = ss_mail( CONF_Reg, '=?'.DEFAULT_CHARSET.'?B?'.base64_encode(STRING_ORDER." номер ".$rID).'?=', 
                totranslit($html),  
                "From: \"".'=?'.DEFAULT_CHARSET.'?B?'.base64_encode(CONF_SHOP_NAME).'?='."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" ); 
}
только формируєт (берет из БД) даные: номер регистрацыи и емейл на каторый отправляетса письмо.

А само содержание письма, беретса из шаблона ("шаблон.txt") ,
PHP:
{$smarty.const.TABLE_CUSTOMER}: {$customer_firstname} {$customer_lastname} 
{$smarty.const.CUSTOMER_EMAIL} {$customer_email} 
{section name=i loop=$customer_add_fields} 
{$customer_add_fields[i].reg_field_name}: {$customer_add_fields[i].reg_field_value} 
{/section} 
{$smarty.const.ADMIN_IP_ADDRESS}: {$customer_ip} 
{$smarty.const.STRING_ORDER_TIME}: {$order_time} 
{$smarty.const.STRING_CUSTOMER_COMMENTS}: {$customer_comments}
тоисть ети функц. што там прописаны вытаскивают из БД инфу и отправляют на мейл. Я так понимаю нужно их транслировать (притом што шаблон имеет формат .txt), или я неправ?

Но как сделать штоб ето все транслировалось латиницей?.
 
Второй код - это код шаблон.txt?
Попробуй сделать так:
PHP:
function totranslit($var) {
 $NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
 $NpjLettersTo   = "abvgdeziklmnoprstufcyi";
 $NpjBiLetters = array(        "й" => "jj", "ё" => "jo", "ж" => "zh", "х" => "kh", "ч" => "ch",        "ш" => "sh", "щ" => "shh", "э" => "je", "ю" => "ju", "я" => "ja",       "ъ" => "", "ь" => "", "ї" => "yi", "є" => "ye",                               );
 $NpjCaps  = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
 $NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";
 $var = str_replace(".php", "", $var);
 $var = trim(strip_tags($var));
 $var = preg_replace( "/\s+/ms", "-", $var );
 $var = strtr( $var, $NpjCaps, $NpjSmall );
 $var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
 $var = strtr( $var, $NpjBiLetters );
 $var = preg_replace("/[^a-z0-9\_\-.]+/mi", "", $var);
 $var=preg_replace('#[\-]+#i', '-', $var);
 $var = strtolower ( $var );
 if (strlen($var) > 50) {
   $var = substr ($var, 0, 50);              
   if (($temp_max = strrpos($var, '-')))  $var = substr ($var, 0, $temp_max);        
 }
 return $var; 
} 

$smarty_mail->assign( "content", $content ); 
    $html = $smarty_mail->fetch("шаблон.txt");
echo "До:<br />".$html."<hr />После:<br />".totranslit($html)."<hr />";
die();
    /*$res = ss_mail( CONF_Reg, Reg2." номер ".$ID, 
                $html,  
                "From: \"".CONF_SITE_NAME."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" );*/ 
    $res = ss_mail( CONF_Reg, '=?'.DEFAULT_CHARSET.'?B?'.base64_encode(STRING_ORDER." номер ".$rID).'?=', 
                totranslit($html),  
                "From: \"".'=?'.DEFAULT_CHARSET.'?B?'.base64_encode(CONF_SHOP_NAME).'?='."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" ); 
}
 
Второй код - это код шаблон.txt?

Да именно так, второй код ето код шаблона из которого берутса переменние потом из Бд регистрац. дание пользователя отправляютса на мейл.
Если сделать так как више то на мейл письмо не приходит (не отправляетса), а в окне браузера ошибка такая:
До:
Номер рег: 90 Пользователь: sdfsdf sdfsdf Email: sadas@sdfds.fd аська: 34343 IP-адрес покупателя: 127.0.0.1 Время рег: 09.01.2009 19:06:42 Комментарии:

После:
nomer-reg-90-polzovatel-sdfsdf-sdfsdf-email

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

но уже штото:)
 
Не что-то а уже есть результат, только не понял почему у тебя в коде это не пашет, ну сделаем по другому.

PHP:
function totranslit($var) {
 $NpjLettersFrom = "абвгдезиклмнопрстуфцыі";
 $NpjLettersTo   = "abvgdeziklmnoprstufcyi";
 $NpjBiLetters = array(        "й" => "jj", "ё" => "jo", "ж" => "zh", "х" => "kh", "ч" => "ch",        "ш" => "sh", "щ" => "shh", "э" => "je", "ю" => "ju", "я" => "ja",       "ъ" => "", "ь" => "", "ї" => "yi", "є" => "ye",                               );
 $NpjCaps  = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯЇЄІ";
 $NpjSmall = "абвгдеёжзийклмнопрстуфхцчшщьъыэюяїєі";
 $var = strtr( $var, $NpjCaps, $NpjSmall );
 $var = strtr( $var, $NpjLettersFrom, $NpjLettersTo );
 $var = strtr( $var, $NpjBiLetters );
 return $var; 
} 

$smarty_mail->assign( "content", $content ); 
    $html = $smarty_mail->fetch("шаблон.txt");
echo "До:<br />".$html."<hr />После:<br />".totranslit($html)."<hr />";
$html = totranslit($html);
#die();
    /*$res = ss_mail( CONF_Reg, Reg2." номер ".$ID, 
                $html,  
                "From: \"".CONF_SITE_NAME."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" );*/ 
    $res = ss_mail( CONF_Reg, '=?'.DEFAULT_CHARSET.'?B?'.base64_encode(STRING_ORDER." номер ".$rID).'?=', 
                $html,  
                "From: \"".'=?'.DEFAULT_CHARSET.'?B?'.base64_encode(CONF_SHOP_NAME).'?='."\"<".CONF_GENERAL_EMAIL.">\n". 
                    stripslashes(EMAIL_MESSAGE_PARAMETERS)."\nReturn-path: <". 
                    CONF_GENERAL_EMAIL.">" ); 
}
 
Все СУПЕР все отлично работает, текст в письме идет транслитом :yahoo:
 
Знаешь где была ошибка? В тебе.
Посмотри внимательно мой первый пост второй пример там именно трансляция идёт в функции ss_mail() не знаю почему ты мой код не скопипастил, поэтому у тебя ничего не транслировалось... зря потратили время на отладку.
С заголовком письма тоже самое смотри первый пост, второй пример, я там тоже сделал...
Хотя не зря я функцию трансляции отредактировал убрал лишнее, что резало текст и не так транслировало...
 
Знаешь где была ошибка? В тебе.
Посмотри внимательно мой первый пост второй пример там именно трансляция идёт в функции ss_mail() не знаю почему ты мой код не скопипастил, поэтому у тебя ничего не транслировалось... зря потратили время на отладку.
С заголовком письма тоже самое смотри первый пост, второй пример, я там тоже сделал...
Хотя не зря я функцию трансляции отредактировал убрал лишнее, что резало текст и не так транслировало...

Да ето точно што ошибка была во мне, почему я не скопипастил, сам не понимаю, дай не внемательно код я посмотрел.
Огромное спасибо за то што помог мне ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху