|
|
|
| Здравствуйте, встала задача, есть задание, хочу написать нечто вроде онлайн переводчика, точнее мне нужно просто выбрать какой либо онлайн переводчик, на своём же сайте будет форма, в из которой будет отправлятся слово.
Задачи
1)Найти онлайн переводчик я так понимаю с API функциями
2)Сформировать запрос с моего сайта на этот переводчик
3)Получить в ответ результат
Надеюсь на вашу помощь | |
|
|
|
|
|
|
|
для: malerok
(11.10.2009 в 00:56)
| | http://translate.google.com/
Поройтесь тут, может, чего нароете.
Ну, или через сокеты или cURL попробуйте. | |
|
|
|
|
|
|
|
для: malerok
(11.10.2009 в 00:56)
| | Вообще-то апи не обязательный атрибут. Можно фактичеки написать скрипт парсера(граббера), который будет отправлять абсолютно любому пепеводчику данные, а потом просто будет обрабатывать должным образом страницу и выделять из неё результат(например с помощью регулярных выражений). С технической точки зрения реализовать конечно же сложнее, чем при использовании API-функций. | |
|
|
|
|
|
|
|
для: dios™
(11.10.2009 в 07:52)
| | Регулярки в моем случае не подходят, поскольку они медленные, а у меня будет передаваться целый массив значений, также нужно и получить массив ответов. Тоже остановился на Googl'e сейчас разбираюсь, не зная с чего начать :( | |
|
|
|
|
|
|
|
для: malerok
(11.10.2009 в 10:09)
| | Регулярки медленные?
Медленнее переводчика и интерфейса к нему? | |
|
|
|
|
|
|
|
для: Trianon
(11.10.2009 в 10:19)
| | Естественно медленнее. Сначала переводчик должен обработать всю информацию и выдать ответ, но только потом ты сможешь обработать регулярками/строковыми функциями его ответ. Это на тот случай, когда АПИ-интерфейса нет. | |
|
|
|
|
|
|
|
для: dios™
(11.10.2009 в 12:22)
| | Скорость работы регулярок (аккуратно составленных, а не абы каких, конечно) даже не в разы, а на порядки выше как скорости перевода, так и времени передачи запроса/ответа.
Этим временем спокойно можно пренебречь. | |
|
|
|
|
|
|
|
для: Trianon
(11.10.2009 в 12:27)
| | Ну а зачем тогда был тогда предыдыщий вопрос? Подкол автора? Насчёт пренебрежения - согласен, в 99% случаев так и есть... ну а в том 1% случаев за дело берутся профессионалы экстра-класса :) | |
|
|
|
|
|
|
|
для: dios™
(11.10.2009 в 12:37)
| | Прочтя вот это "Регулярки в моем случае не подходят, поскольку они медленные, " в контексте проблемы, я был кхм... скажем так, очень сильно удивлен.
В этом и вопрос.
Профессионал-то как раз не станет тратить свое время на оптимизацию не самого слабого участка цепочки, если при этом никаких других побочных положительных эффектов не возникает.
Перфекционист если только.
Но мои личные наблюдения показывают, что эти два Пэ совместимы слабо... | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: serjinio
(11.10.2009 в 11:52)
| | Огромное спасибо, почитал дополнительного материала по cUrl и со всем разобрался.
Подставил так: curl_setopt($ch, CURLOPT_POSTFIELDS, 'text='.$g_t_data);
В ответ все верно приходит, начинаю парсить, serjinio еще раз спасибо! | |
|
|
|
|
|
|
|
для: serjinio
(11.10.2009 в 11:52)
| | А можно парсить выдачу с помощью регулярных выражений? | |
|
|
|
|
|
|
|
для: Bozhko
(05.09.2010 в 18:35)
| | А зачем так сложно... Гугл же сам все сделал. Вот тут посмотрите. | |
|
|
|
|
|
|
|
для: Николай2357
(05.09.2010 в 18:51)
| | У меня исходный текст находится в переменной $a а результат нужно занести в переменную $b для того чтобы дальше можно было с ней работать. Можно ли такое реализовать в данном скрипте? | |
|
|
|
|
|
|
|
для: Bozhko
(05.09.2010 в 20:44)
| | Нет. Тогда и впрямь нужно курлом. | |
|
|
|
|
|
|
|
для: 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 в 09:59)
| | Все решилось добавлением строчки
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
|
| |
|
|
|