кирилица и get запрос

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

pepeh

Создатель
Регистрация
24 Май 2008
Сообщения
43
Реакции
1
в Гугле есть такой сервис где можно переводить через get запрос:
Для просмотра ссылки Войди или Зарегистрируйся

Есть проблема что если в запросе написать кириллицу ничего не переводится, но сервис поддерживает перевод

Например вместо
langpair=en|ru
написать
langpair=ru|en
и вместо
q=hello
написать
q=привет

получится q=%EF%F0%E8%E2%E5%F2

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

адрес скрипта Для просмотра ссылки Войди или Зарегистрируйся
 
PHP:
$url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='. urlencode( iconv('windows-1251', "UTF-8", "привет") ) .'&langpair=ru|en'; 
print_r( file_get_contents($url));
 
  • Заблокирован
  • #3
PHP:
function utf8_convert($str, $type)
{
   static $conv = '';
   if (!is_array($conv))
   {
      $conv = array();
      for ($x=128; $x <= 143; $x++)
      {
         $conv['utf'][] = chr(209) . chr($x);
         $conv['win'][] = chr($x + 112);
      }
      for ($x=144; $x<= 191; $x++)
      {
         $conv['utf'][] = chr(208) . chr($x);
         $conv['win'][] = chr($x + 48);
      }
      $conv['utf'][] = chr(208) . chr(129);
      $conv['win'][] = chr(168);
      $conv['utf'][] = chr(209) . chr(145);
      $conv['win'][] = chr(184);
   }
   if ($type == 'w')
   {
      return str_replace($conv['utf'], $conv['win'], $str);
   }
   elseif ($type == 'u')
   {
      return str_replace($conv['win'], $conv['utf'], $str);
   }
   else
   {
      return $str;
   }
}

$type равно либо 'w', либо 'u' в зависимости от направления кодирования
 
видимо всё таки chang дал оптимальный вариант решения
 
Есть еще одна пробелема ... масимум текста может быть 372 символа (вместо слова "привет" можно написать макс. 372 символа)


Как сделать так чтобы оно подавало запросы в цикле например ищет последнее слово которое вместе с текстом не более 360 символов???? :nezn:

мне нужно выполнить этот кусок кода в цикле,
PHP:
$text = $gt->en_to_ru($text);
(например чтобы создавало массив с кусками текста затем объединило элементы массива в одну переменную $text)
но чтобы этой функцией не обрезались слова
 
Не обрезать слова мало, нужно еще и фразы не разбивать...
 
делит по словам/предложениям и вып. перевод в цикле
PHP:
// по словам до 360 символов
if(strlen($text)>372) { #если символов > max
$s_text=wordwrap($text,360,'|delimiter|'); $s_arr=explode('|delimiter|',$s_text); #разделяет по словам
foreach ($s_arr as $value) $text_2 .= $gt->en_to_ru($value).' '; # перевод в цикле
$text = $text_2; }
else { $text = $gt->en_to_ru($text); }

PHP:
// по предложениям(точкам и \n) до 360 символов
if(strlen($text)>372) { 
preg_match_all("/.{1,360}(\.\s|\n)/s",$text,$s_res); $s_arr=$s_res[0]; #разделяет по предложениям
foreach ($s_arr as $value) $text_2 .= $gt->en_to_ru($value).' '; 
$text = $text_2; }
else { $text = $gt->en_to_ru($text); }
 
делит по словам/предложениям и вып. перевод в цикле
PHP:
[PHP]// по предложениям(точкам и \n) до 360 символов
if(strlen($text)>372) { 
preg_match_all("/.{1,360}(\.\s|\n)/s",$text,$s_res); $s_arr=$s_res[0]; #разделяет по предложениям
foreach ($s_arr as $value) $text_2 .= $gt->en_to_ru($value).' '; 
$text = $text_2; }
else { $text = $gt->en_to_ru($text); }
код обрезает последнее предложение. Как исправить?
 
код обрезает последнее предложение. Как исправить?

PHP:
if(strlen($text)>372) {
$text .= "\n";
preg_match_all("/.{1,360}(\.\s|\n)/s",$text,$s_res); $s_arr=$s_res[0]; #разделяет по предложениям
foreach ($s_arr as $value) $text_2 .= $gt->en_to_ru($value).' '; 
$text = $text_2; }
else { $text = $gt->en_to_ru($text); }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху