14 апреля 2008 ~ 18 Комментариев

Приятные мелочи на php

php

PHP-logo-140_74px

Пишу эту заметку для себя, вдруг мне пригодиться, в моем компьютере потеряется, а тут на блоге останется навсегда — да и Вам может пригодиться ;-).

Две маленькие функции на php:

  • Определение Тематического Индекса Цитирования
  • Многоязычный переводчик

Определение ТИЦ

Берет значения тИЦ напрямую из Яндекс.Каталога, очень быстрая скорость работы. Писал не Я, писал Владимир.

<?php
function yandex_tic($url){
$file=file_get_contents("http://search.yaca.yandex.ru/yca/cy/ch/$url/");
if(preg_match("!—\s+([0-9]{0,8})<\/b>!is",$file,$ok)){
// сайт не в каталоге.
$str=$ok[1];
        }
        else if(preg_match("!<td class=\"current\" valign=\"middle\">(.*?)</td>\n</tr>!si", $file, $ok)){
                if(preg_match("!<td align=\"right\">(.*?)</td>\n</tr>!si", $ok[0], $str)){
// сайт в каталоге.
$str=$str[1];
                } else {
$str=0;
                }
        }
        else {
$str=0;
        }
return trim($str);
}
// Пример:
// echo yandex_tic("zhilinsky.ru")
?>

Многоязычный переводчик

Работает через Google Переводчик.

Работает быстро. Писал Я, на коленке, поэтому криво, если будут замечания — пишите! Я исправлюсь ;-)

<?php
function translate($text,$lg) {
$lg = urlencode($lg);
$text = urlencode($text);
$link = file_get_contents("http://google.com/translate_t?langpair=$lg&text=$text");
preg_match('/<div id=result_box dir=\"ltr\">(.*?)<\/div>/', $link, $out);
return $out[1];
} 

// Пример:
// echo translate("hello")

// Пример c другим языком(С Английского на Немецкий):
// echo translate("hello", "en|de")
?>

18 Комментариев для “Приятные мелочи на php”

  1. EwGenij 15 апреля 2008 at 0:03 Permalink

    Вполне неплохо, но пригодится только для маленьких заданий. Иначе забанят негодяи :) Попомучался я пару дней с переводом городов мира при помощи этого транслятора. Даже прокси не каждые помогали. Еще и сейчас товарищ мучается, продолжает. И как оказалось, для транслятора недавно открыли доступный API :)

    А про тиц еще вот хорошая заметка.
    http://kurilka.co.ua/archives/alternative-variants-receipt-cy – на основе распознавания текста с картинки. Хотя, уверен, Вы с ней (заметкой) знакомы :)

  2. Александр 15 апреля 2008 at 0:39 Permalink

    Днями просиживаю штаны в интернете, а про переводчик от гугля первый раз слышу… чудеса :-O

  3. Zeldar 15 апреля 2008 at 2:00 Permalink

    Они только недавно открыли свое API по переводчику.
    А как сервис гугля переводчик живет уже оооочень давно

  4. AztEK 15 апреля 2008 at 17:22 Permalink

    file_get_contents(«http://…»):

    Это ужас, никогда так не пишите! ТОЛЬКО с помощью сокетов или cURL.

  5. Я собственной персоной 15 апреля 2008 at 18:38 Permalink

    file_get_contents(«http://…»):

    Это ужас, никогда так не пишите! ТОЛЬКО с помощью сокетов или cURL.

    Ну гореть мне в пхп аду :-). А чем плох этот метод? Работает ведь!

  6. Strike 16 июля 2008 at 4:20 Permalink

    file_get_contents(«http://…»):

    Это ужас, никогда так не пишите! ТОЛЬКО с помощью сокетов или cURL.

    Ну гореть мне в пхп аду :-). А чем плох этот метод? Работает ведь!

    Этот метод работает но не везде и не во всех ситуациях. И вот несколько причин подтверждающих это:
    1. file_get_contents работает только с удаленными хостами толдько при включенной директиве allow_url_fopen в php.ini (установить эту директиву в .htaccess или скрипте нельзя). Как правило хостеры ее отключают. По крайней мере умные.
    2. file_get_contents не имеет параметра тайм-аута, что самое важное,т.к. в случае если сайт не отвечает или тяжело отвечает, скрипт может легко «подвиснуть».
    3. Если где-то используется file_get_contents и случайно пропущена обработка возможности ошибочного входного параметра, то может быть XSS или переполнения буфера.
    4. Нет возможности указать порт, по которому необходимо соединиться с сервером.

  7. aleksej 2 августа 2008 at 0:43 Permalink

    $ctx = stream_context_create(array(
    ‘http’ => array(
    ‘timeout’ => 60
    )
    )
    );
    $img = @file_get_contents(‘http://…', 0, $ctx);

    To: Strike
    Все там есть и порт и прокси даже указать можно, если ничего не знаешь – зачем писать про эту функцию.
    Вот тебе еще

    // Define a context for HTTP.
    $aContext = array(
    ‘http’ => array(
    ‘proxy’ => ‘tcp://127.0.0.1:8080′, // This needs to be the server and the port of the NTLM Authentication Proxy Server.
    ‘request_fulluri’ => True,
    ),
    );
    $cxContext = stream_context_create($aContext);

    // Now all file stream functions can use this context.

    $sFile = file_get_contents(«http://…», False, $cxContext);

    echo $sFile;

  8. test 17 октября 2008 at 20:24 Permalink

    а вот русский не хавает :(

  9. Алексей 20 октября 2008 at 2:35 Permalink

    по примеру переводчика хотел сделать парсер текстов песен! но что то не работает, может кто поможет? мне кажеться очень полезно было бы. вот код:

    <?php
    function text($artist,$title) {
    $title = urlencode($title);
    $artist = urlencode($artist);
    $link = file_get_contents(«http://www.lyricsplugin.com/wmplayer03/plugin/?artist=$artist&title=$title»);
    preg_match(‘/(.*?)/’, $link, $out);
    return $out[1];
    }
    //http://www.lyricsplugin.com/wmplayer03/plugin/?artist=Каста&title=Ревность
    echo text(«Каста», «Ревность»)

    ?>

  10. Металлоконструкции 2 марта 2010 at 17:55 Permalink

    Айпи постоянно банится.

  11. doğum kontrol yöntemleri 3 февраля 2012 at 10:44 Permalink

    Fantastic submit admin! i bookmarked your word wide web blog. i’ll search ahead should you will have an e-mail record including.

  12. Network Rehberi 3 февраля 2012 at 11:59 Permalink

    Greetings thanks for wonderful submit i used to be browsing for this issue survive a couple of days and nights. I’ll look for following precious posts. Have fun admin.

  13. güncel blog 4 февраля 2012 at 2:00 Permalink

    I was curious about your future article admin definitely essential this blog site super wonderful weblog

  14. dizi izle 4 февраля 2012 at 3:10 Permalink

    I was searching for this blog site survive three or more days wonderful webpage owner great posts every thing is superb

  15. lüks araç kiralama 4 февраля 2012 at 8:34 Permalink

    Terrific submit admin thank you. I found what i was trying to find here. I will review entire of posts in this time of day

  16. yarış oyunu 4 февраля 2012 at 13:50 Permalink

    Great article admin thank you. I discovered what i was trying to find here. I’ll review whole of posts in this evening

  17. chat 4 февраля 2012 at 16:18 Permalink

    Genuinely required post admin fantastic one particular i bookmarked your website webpage see you in upcoming blog site put up.

  18. liseli porno 4 февраля 2012 at 17:58 Permalink

    Great 1 weblog manager achievements blog site put up great sharings with this web site always have enjoyable


Оставить комментарий