транслитация текста формы

iTUX

Новичок
транслитация текста формы

есть некая форма

<FORM ACTION="send.php" name="send" METHOD="POST">
<textarea name="text">текст сообщения</textarea>
<input name="send" type="submit" value="послать сообщение">
</FORM>

В send.php прописано что бы текст с <textarea> отсылался на мыло. Подскажите как реализовать автотранслитацию текста, т.е. нужно если кто либо напишет по русски в <textarea>, то должна пройти транслитация текста. Уже и функцию на просторах нета нарыл, немогу догнать как ее прикруть, т.к. php мучаю недавно. Надеюсь на помощь.

function ToTranslit($var)
{
$f = array('а','б','в','г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
$r = array('a', 'b', 'v', 'g', 'd', 'e', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sz', '', 'y', '', 'e', 'yu', 'ya');
$var = preg_replace('/\W/', '_', strtolower(strip_tags($var)));
$var = preg_replace('/[_]+/', '-', $var);
$var = preg_replace('/(_$)/', '', $var);
$var = preg_replace('/(^_)/', '', $var);
$var = str_replace($f,$r,$var);
return $var;
 

WP

^_^
В начало send.php добавь:
PHP:
function ToTranslit($var)
{
$f = array('а','б','в','г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
$r = array('a', 'b', 'v', 'g', 'd', 'e', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sz', '', 'y', '', 'e', 'yu', 'ya');
$var = preg_replace('/\W/', '_', strtolower(strip_tags($var)));
$var = preg_replace('/[_]+/', '-', $var);
$var = preg_replace('/(_$)/', '', $var);
$var = preg_replace('/(^_)/', '', $var);
$var = str_replace($f,$r,$var);
return $var; 
}
$_POST['text'] = $_REQUEST['text'] = ToTranslit($_POST['text']);
 

rob72

Новичок
Можно еще так
Это делаем только один раз где-нибудь в начале
PHP:
<?php
$tr=array('А'=>'A','Б'=>'B', 'Ж'=>'ZH');
//И так далее, причем заглавные и строчные отдельно
?>
А преобразуем так:
PHP:
<?php $translit=strtr('Русский текст',$tr);?>
Отдельных функций не требуется
 

iTUX

Новичок
функция не пашет все равно. А по поводу второго способа:

отправляю на мыло так

$text = $_POST["text"];
$mes="$text";
mail($to, "", $mes);

т.е. получаеться что нужно

$tr=array('А'=>'A','Б'=>'B', 'Ж'=>'ZH');

$text = $_POST["text"];

$translit=strtr('$text',$tr);

$mes="$translit";

mail($to, "", $mes);

Но тогда приходит "$text"
 

Raynor

Новичок
Автор оригинала: rob72
Можно еще так
Это делаем только один раз где-нибудь в начале
PHP:
<?php
$tr=array('А'=>'A','Б'=>'B', 'Ж'=>'ZH');
//И так далее, причем заглавные и строчные отдельно
?>
А преобразуем так:
PHP:
<?php $translit=strtr('Русский текст',$tr);?>
Отдельных функций не требуется
Из мануала:
If from and to are different lengths, the extra characters in the longer of the two are ignored.
Так что этот способ не пойдет
 
Сверху