Перейти к содержимому


Партнерская программа Kredov

Оптимизация задачи перевода слов в язык t9

#1 neitrosha

neitrosha
  • Пользователь
  • 7 сообщений
  • Репутация: 0
0

Отправлено 30 Март 2012 - 12:48

Придумал задачку для общего развития - преобразование любых слов в представление телефонного языка t9, мы вводим слово, а программа нам выдает, какие цифры нужно нажать на телефоне, чтоб мы смогли напечатать всё это. Вот, собственно код

<?php

if (isset($_POST['go'])) $word=$_POST['word'];
else exit();
$t_9_full=array(
'1'=>',.?/!"\'@#$%^&*()_-+=',
'2'=>'abc',
'3'=>'def',
'4'=>'ghi',
'5'=>'jkl',
'6'=>'mno',
'7'=>'pqrs',
'8'=>'tuv',
'9'=>'wxyz',
'0'=>' '
);

echo '<pre>';  var_export($t_9_full); echo '</pre><br>';

function t9(&$word){ //передача параметра по ссылке, чтобы работало не с копией значения, а с самим значением
global $t_9_full;
$len=strlen($word); //узнаем длину слова
$word = chunk_split($word, 1, '|');
/*
Разбивает строку на фрагменты, в данном случае - через каждую букву ставит
разделитель
*/

$len++;
/*
вместе с лишним символом хавает
*/
$word=explode("|", $word, $len);
/*
создаем массив, разбив его на символы
*/
echo '<pre>';  var_export($word); echo '</pre><br>';
$len--; //из-за нумерации массива - -1
$word_in_t9="";
	  
		for ($m=0; $m!=$len; $m++){
					foreach($t_9_full as $key=>$sense){
					$pos = stristr($sense, $word[$m]);
						if ($pos != False)  {
							$word_in_t9=$word_in_t9.$key;
							break;
											}
														}
										  }
unset($word,$GLOBALS['t_9_full']);
/*
$pos и $len можно не удалять, поскольку они удалятся сами, так ведь?
*/
	return $word_in_t9;  
	}
$word = t9($word);
echo $word;

Работать всё работает (для английских слов или предложений, над русскими я еще не думал), такая просьба - как можно весь этот код оптимизировать/ускорить? Где есть мои просчеты?
Поскольку правильно программировать нужно начинать учиться с самого начала, не хочу потом переучиваться. Жду советов, заранее спасибо.

 

 

  • 0


Оформление форума – IPBSkins.ru