Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Онлайн переводчик
 
 автор: malerok   (11.10.2009 в 00:56)   письмо автору
 
 

Здравствуйте, встала задача, есть задание, хочу написать нечто вроде онлайн переводчика, точнее мне нужно просто выбрать какой либо онлайн переводчик, на своём же сайте будет форма, в из которой будет отправлятся слово.
Задачи
1)Найти онлайн переводчик я так понимаю с API функциями
2)Сформировать запрос с моего сайта на этот переводчик
3)Получить в ответ результат
Надеюсь на вашу помощь

  Ответить  
 
 автор: neadekvat   (11.10.2009 в 01:39)   письмо автору
 
   для: malerok   (11.10.2009 в 00:56)
 

http://translate.google.com/
Поройтесь тут, может, чего нароете.
Ну, или через сокеты или cURL попробуйте.

  Ответить  
 
 автор: dios™   (11.10.2009 в 07:52)   письмо автору
 
   для: malerok   (11.10.2009 в 00:56)
 

Вообще-то апи не обязательный атрибут. Можно фактичеки написать скрипт парсера(граббера), который будет отправлять абсолютно любому пепеводчику данные, а потом просто будет обрабатывать должным образом страницу и выделять из неё результат(например с помощью регулярных выражений). С технической точки зрения реализовать конечно же сложнее, чем при использовании API-функций.

  Ответить  
 
 автор: malerok   (11.10.2009 в 10:09)   письмо автору
 
   для: dios™   (11.10.2009 в 07:52)
 

Регулярки в моем случае не подходят, поскольку они медленные, а у меня будет передаваться целый массив значений, также нужно и получить массив ответов. Тоже остановился на Googl'e сейчас разбираюсь, не зная с чего начать :(

  Ответить  
 
 автор: Trianon   (11.10.2009 в 10:19)   письмо автору
 
   для: malerok   (11.10.2009 в 10:09)
 

Регулярки медленные?
Медленнее переводчика и интерфейса к нему?

  Ответить  
 
 автор: dios™   (11.10.2009 в 12:22)   письмо автору
 
   для: Trianon   (11.10.2009 в 10:19)
 

Естественно медленнее. Сначала переводчик должен обработать всю информацию и выдать ответ, но только потом ты сможешь обработать регулярками/строковыми функциями его ответ. Это на тот случай, когда АПИ-интерфейса нет.

  Ответить  
 
 автор: Trianon   (11.10.2009 в 12:27)   письмо автору
 
   для: dios™   (11.10.2009 в 12:22)
 

Скорость работы регулярок (аккуратно составленных, а не абы каких, конечно) даже не в разы, а на порядки выше как скорости перевода, так и времени передачи запроса/ответа.
Этим временем спокойно можно пренебречь.

  Ответить  
 
 автор: dios™   (11.10.2009 в 12:37)   письмо автору
 
   для: Trianon   (11.10.2009 в 12:27)
 

Ну а зачем тогда был тогда предыдыщий вопрос? Подкол автора? Насчёт пренебрежения - согласен, в 99% случаев так и есть... ну а в том 1% случаев за дело берутся профессионалы экстра-класса :)

  Ответить  
 
 автор: Trianon   (11.10.2009 в 12:44)   письмо автору
 
   для: dios™   (11.10.2009 в 12:37)
 

Прочтя вот это "Регулярки в моем случае не подходят, поскольку они медленные, " в контексте проблемы, я был кхм... скажем так, очень сильно удивлен.
В этом и вопрос.

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

  Ответить  
 
 автор: serjinio   (11.10.2009 в 11:52)   письмо автору
 
   для: malerok   (11.10.2009 в 10:09)
 

$g_t_url  = 'http://translate.google.com/translate_t?langpair=ru|en&';
$g_t_data = isset($text)? 'text='.urlencode($text): NULL;
$useragent=' ....';
$ch = curl_init($g_t_url);
......работа curl.....

curl_setopt($ch, CURLOPT_POSTFIELDS, $g_t_data);
$html = curl_exec($ch);
.....
curl_close ($ch);
# парсим выдачу....с помощью  substr и strpos

  Ответить  
 
 автор: malerok   (11.10.2009 в 12:49)   письмо автору
 
   для: serjinio   (11.10.2009 в 11:52)
 

Огромное спасибо, почитал дополнительного материала по cUrl и со всем разобрался.
Подставил так: curl_setopt($ch, CURLOPT_POSTFIELDS, 'text='.$g_t_data);
В ответ все верно приходит, начинаю парсить, serjinio еще раз спасибо!

  Ответить  
 
 автор: Bozhko   (05.09.2010 в 18:35)   письмо автору
 
   для: serjinio   (11.10.2009 в 11:52)
 

А можно парсить выдачу с помощью регулярных выражений?

  Ответить  
 
 автор: Николай2357   (05.09.2010 в 18:51)   письмо автору
 
   для: Bozhko   (05.09.2010 в 18:35)
 

А зачем так сложно... Гугл же сам все сделал. Вот тут посмотрите.

  Ответить  
 
 автор: Bozhko   (05.09.2010 в 20:44)   письмо автору
 
   для: Николай2357   (05.09.2010 в 18:51)
 

У меня исходный текст находится в переменной $a а результат нужно занести в переменную $b для того чтобы дальше можно было с ней работать. Можно ли такое реализовать в данном скрипте?

  Ответить  
 
 автор: Николай2357   (05.09.2010 в 22:12)   письмо автору
 
   для: Bozhko   (05.09.2010 в 20:44)
 

Нет. Тогда и впрямь нужно курлом.

  Ответить  
 
 автор: Bozhko   (06.09.2010 в 09:59)   письмо автору
 
   для: serjinio   (11.10.2009 в 11:52)
 

У меня скрипт


>
$g_t_url  = 'http://translate.google.com/translate_t?langpair=ru|en&';
>$g_t_data = isset($text)? 'text='.urlencode($text): NULL;
>$useragent=' ....';
>$ch = curl_init($g_t_url);
>......работа curl.....
>
>curl_setopt($ch, CURLOPT_POSTFIELDS, $g_t_data);
>$html = curl_exec($ch);
>.....
>curl_close ($ch);
># парсим выдачу....с помощью  substr и strpos
>


работает нормально но... проверяю переменную $html


if (isset($html))
{
    echo "Существует";

    else 
{
    echo "Не существует";
}


ее не существует и я немогу прописать


preg_match_all ("/...рег. выраж.../isU", $html, $matches, PREG_PATTERN_ORDER);


С чем это может быть связано?

  Ответить  
 
 автор: Bozhko   (06.09.2010 в 11:05)   письмо автору
 
   для: Bozhko   (06.09.2010 в 09:59)
 

Все решилось добавлением строчки


curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования