[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. PROPH3T

    PROPH3T New Member

    Joined:
    20 Nov 2007
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    Помогите, пожалуйста, разобраться.
    Необходимо написать скрипт для вк, предполагаемый алгоритм его действий таков:

    Авторизация,
    Переход на публичную страницу (на стене страницы - треки),
    Фильтрация из кода страницы первых 70ти названий треков и их значений "мне нравится",
    Сортировка на убывание по значению "мне нравится",
    Запись этого всего построчно в файл, в виде:

    На странице выводится по 10 сообщений, для отображения следующих 10ти, используется JS:
    Code:
    wall.showMore(10);
    --------
    Код на данный момент:

    PHP:
    <?php

    //Авторизация

    $mail "мыло";
    $pass "пасс";

    }
    $res connect("http://login.vk.com/?act=login&email=$mail&pass=$pass&vk=");
    $sid grabb($res"value='""'");
    $res connect("http://vkontakte.ru/login.php?op=slogin&redirect...=$sid");
    $cookie 'remixchk=5; remixsid='.grabb($res'remixsid='';');

    function 
    connect($link$cookie=null){

    $ch curl_init();
    curl_setopt($chCURLOPT_URL,$link);
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    curl_setopt($chCURLOPT_TIMEOUT0);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_COOKIE$cookie);

    $otvet curl_exec($ch);
    curl_close($ch);
    return 
    $otvet;
    }

    //Переход на страницу

    $res connect ("http://vkontakte.ru/public********"$cookie);

    ?>

    Все, пока что на этом тупик.
    Подскажите, как лучше сделать дальше, как лучше грабить инфу, регуляркой или strpos/substr, и как это реализовать?
    Привожу кусок кода, для наглядности, с одной оценкой (мне нравится) трека:

    Code:
    <div class="like_wrap fl_r" onmouseover="wall.likeOver('-11111111_685')" onmouseout="wall.likeOut('-11111111_685')" onclick="wall.like('-25834005_685', '1b381637c4da5a700b'); event.cancelBubble = true;">
      <span class="like_link fl_l" id="like_link-11111111_685">Мне нравится</span>
      <div class=" fl_l" id="like_icon-11111111_685"></div>
      <span class="like_count fl_l" id="like_count-11111111_[B][COLOR=DarkRed]***[/COLOR][/B]">[B][COLOR=DarkRed]6[/COLOR][/B]</span>
    Собственно 6 - и есть оценка, которую надо выдрать,
    *** - динамические цифры
     
  2. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Вопрос как сдела замену текста к примеру только 3 раза ?

    К примеру во всем предложениее встречаеться 100500 раз слово "привет" мне неужно заменить его только 3 раза как это сделать :?

    Я просто не пойму как ставить лимит... т.е какой функцией
     
  3. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Adio,
    PHP:
    <?php
    $str 
    "привет привет привет привет привет привет";
    $replace preg_replace("#привет#""пока"$str$limit 3);
    echo 
    $replace;
    ?>
     
  4. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Не столь селен, кто сможет совместить работу двух отдельных скриптов, я нашел одно и второе, а как совместить не знаю.

    Первый скрипт

    Шифрование емайла
    Code:
    $email = '[email protected]';
    $url = 'mailto:[email protected]';
    $safe_email=$safe_url='';
    for($i=0; $i<strlen($email); $i++){
       $safe_email .= '&#'.ord($email{$i}).';';
    }
    for($i=0; $i<strlen($url); $i++){
       $safe_url .= '&#'.ord($url{$i}).';';
    }
    print "<a href='$safe_url'>$safe_email</a>";
    
    Второй код ( Нахождение 3 типов емайлов, как я понял, и заключение их в теги mailto)

    Code:
    $str_t = "<a href=\"#\">[email protected]</a> <br>
              [email protected] <br>
              <a href=\"mailto:[email protected]\">[email protected]</a><br>";
    		  
    		  
    
    $email_pattern = '[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]{2,4}';
    
    
    $pattern = "!(?:<a\s+href\s*=\s*\"[^\"]\">($email_pattern)</a>|<a\s+href\s*=\s*\"mailto:($email_pattern)\">[^<]+</a>|($email_pattern))!is";
    
    
    
    $replacement = '<a href="mailto:$1$2$3">$1$2$3</a>';
    
    $emails = preg_replace($pattern, $replacement, $str_t);
    
    echo $emails;
    
    
    Цель этого всего, найти на страницах в которых есть текстовые емайлы без тегов, и заменить их тегами с шифрованием как в 1 скрипте.

    Как это совместить ?

    +++++

    Буду благодарен. - бо спаммеры сабаки задалбали уже


    Нужно сегодня вечером - ночью пишем в личку - будет возможность заплатить вм
     
    #18484 Adio, 22 May 2011
    Last edited: 22 May 2011
  5. nosfy

    nosfy New Member

    Joined:
    31 Jul 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Есть у кого идеи по выявлению дублирующих частей в нескольких разных текстах?

    Дело в том, что в базе имеется несколько сотен текстов, которые содержат дублирующие части (как правило это предложения, блок текста итд). Части эти как правило в начале либо в конце. В перспективе дублирующие части будут удаляться, с этим проблем нет) Нужно выявить.

    Подкиньте идейку пожалуйста.
     
  6. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    Варианты:
    1) Вставить минимальный размер дублирующей части. Разделять текст по этим частям через каждый символ. При нахождении совпадения пробовать добавить к этому совпадению еще один символ и сравнивать пока совпадение не исчезнет. Потом удалять
    2) Разделить текст на отдельные части (По 5 допустим). Расчитать % совпадения. Потом методом перебора отсеивать не дублированые части

    Код займет ~300 символов
     
  7. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    PHP:
    $str_t "тут у нас имейлы или страница с имейлами";
              
              

    $email_pattern '[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]{2,4}';


    $pattern "!(?:<a\s+href\s*=\s*\"[^\"]\">($email_pattern)</a>|<a\s+href\s*=\s*\"mailto:($email_pattern)\">[^<]+</a>|($email_pattern))!is";


    $email "$1$2$3";
    $url "mailto:$1$2$3";
    $safe_email=$safe_url='';
    for(
    $i=0$i<strlen($email); $i++){
       
    $safe_email .= '&#'.ord($email{$i}).';';
    }
    for(
    $i=0$i<strlen($url); $i++){
       
    $safe_url .= '&#'.ord($url{$i}).';';
    }
    $replacement "<a href='$safe_url'>$safe_email</a>";

    $emails preg_replace($pattern$replacement$str_t);

    echo 
    $emails;
    держи
     
  8. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    PHP:
    <?php

    //Авторизация

    $mail "мыло";
    $pass "пасс";

    }
    $res connect("http://login.vk.com/?act=login&email=$mail&pass=$pass&vk=");
    $sid grabb($res"value='""'");
    $res connect("http://vkontakte.ru/login.php?op=slogin&redirect...=$sid");
    $cookie 'remixchk=5; remixsid='.grabb($res'remixsid='';');

    function 
    connect($link$cookie=null){

    $ch curl_init();
    curl_setopt($chCURLOPT_URL,$link);
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    curl_setopt($chCURLOPT_TIMEOUT0);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_COOKIE$cookie);

    $otvet curl_exec($ch);
    curl_close($ch);
    return 
    $otvet;
    }

    //Переход на страницу

    $res connect ("http://vkontakte.ru/public********"$cookie);

    $res preg_match_all("|<span class=\"like_count fl_l\" id=\"like_count-11111111_\d\d\d\">(.*)<\/span>|"$res);
    print_r($res);
    ?>
    вроде правильно. если не получится - я покопаюсь в регулярке, но ход мыслей примерно такой.
    на работу не проверял. Пиши в ПМ если что.
    Просто у меня всегда возникали проблемы с регулярками.
     
    #18488 OnlyOn, 22 May 2011
    Last edited: 22 May 2011
  9. DrDastan

    DrDastan New Member

    Joined:
    13 Mar 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Всем доброго времени суток!

    Сразу скажу, что только начал заниматься сайтостроением, так что не пинайте сильно))

    Вообщем-то взял тест хостинг, закинул туда оболочку сайта и нужные мне скрипты

    Как настроить скрипт так, чтобы он работал постоянно? Хостинг 1gb.ru

    В инструкции к срипту было написано:
    - проследить чтобы были установлены настройки сервера для работы с CURL неограниченное время
    ( в php.ini max_execution_time=0, max_input_time=0 )

    Где этот php.ini?)

    Заранее спасибо
     
  10. Lindows

    Lindows Member

    Joined:
    2 Nov 2009
    Messages:
    11
    Likes Received:
    11
    Reputations:
    7
    Если на Линуксе то /etc/conf.d/php/ - в этой папке. Если Windows то по стандартному адресу. У вас скорее всего линукс.
     
  11. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    У него скорее всего шаред хостинг и никто ему не позволит поменять настройки.

    Разве что постараються и сделают под твой акк выделенные, что бывает крайне редко.
    Поставь set_time_limit(0); и ignore_user_abort(true);
     
  12. Slepoi_Kot

    Slepoi_Kot New Member

    Joined:
    8 Jan 2010
    Messages:
    58
    Likes Received:
    0
    Reputations:
    0
    Не подскажи те где находиться showposts.php в DLE
     
  13. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    /engine/forum/sources/showposts.php
    Это в форуме если я правильно понял?
    И вообще это не сюда.
     
  14. Slepoi_Kot

    Slepoi_Kot New Member

    Joined:
    8 Jan 2010
    Messages:
    58
    Likes Received:
    0
    Reputations:
    0
    А от сайта где находится это я от туда рекламу просто хочу убрать
    типо этого у вас не прав доступа и сбоку реклама торчит как её убрать ?
     
  15. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18




    Спасибо, но оно не корректно работает.

    В плане вот что мне выдает


    text hereeeeeeeeeeeeeeeeeeeeeee $1$2$3

    $1$2$3 шифруеться но емайла нет..

    Вообщем сурс

    Code:
    text hereeeeeeeeeeeeeeeeeeeeeee <a href='mailto:$1$2$3'>$1$2$3</a> 
    
     
  16. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    А так:

    PHP:
     $str_t "тут у нас имейлы или страница с имейлами"
               
               

    $email_pattern '[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]{2,4}'


    $pattern "!(?:<a\s+href\s*=\s*\"[^\"]\">($email_pattern)</a>|<a\s+href\s*=\s*\"mailto:($email_pattern)\">[^<]+</a>|($email_pattern))!is"

    function 
    rep2($1,$2,$3) {
    $email = $1.$2.$3
    $url "mailto:".$1.$2.$3
    $safe[0]=$safe[1]=''
    for(
    $i=0$i<strlen($email); $i++){ 
       
    $safe[0] .= '&#'.ord($email{$i}).';'

    for(
    $i=0$i<strlen($url); $i++){ 
       
    $safe[1] .= '&#'.ord($url{$i}).';'

    $replacement "<a href='$safe[1]'>$safe[0]</a>"
    return 
    $replacement;
    }


    $emails preg_replace($patternrep2($1,$2,$3), $str_t); 

    echo 
    $emails;  
     
    #18496 OnlyOn, 23 May 2011
    Last edited: 23 May 2011
  17. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18
    Жалуеться...


    Parse error: syntax error, unexpected T_DNUMBER, expecting T_VARIABLE or '$' in Z:\home\test1.ru\www\\emailprotect.php on line 34
     
  18. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    Изменил предыдущий пост. Я сейчас туплю маленько. Уже понял в чем ошибка была) Я вообще забыл что там не передается заранее переменная и она существует лишь в preg_replace
     
  19. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    148
    Reputations:
    18

    Parse error: syntax error, unexpected '$', expecting '&' or T_VARIABLE in 33


    Ругаеться на function rep2($1,$2,$3)
     
  20. OnlyOn

    OnlyOn Banned

    Joined:
    18 Oct 2010
    Messages:
    252
    Likes Received:
    89
    Reputations:
    36
    PHP:
    <?php
     $str_t 
    "тут у нас имейлы или страница с имейлами [email protected]";  
                
                

    $email_pattern '[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]{2,4}';  


    $pattern "!(?:<a\s+href\s*=\s*\"[^\"]\">($email_pattern)</a>|<a\s+href\s*=\s*\"mailto:($email_pattern)\">[^<]+</a>|($email_pattern))!is";  

    function 
    reput2 ($x) { 
    $email $x;  
    $url "mailto:".$x;  
    $safe[0]=$safe[1]='';  
    for(
    $i=0$i<strlen($email); $i++){  
       
    $safe[0] .= '&#'.ord($email{$i}).';';  
    }  
    for(
    $i=0$i<strlen($url); $i++){  
       
    $safe[1] .= '&#'.ord($url{$i}).';';  
    }  
    $replacement "<a href='$safe[1]'>$safe[0]</a>";  
    return 
    $replacement


    $emails preg_replace($patternreput2($1.$2.$3), $str_t);  

    echo 
    $emails;  
    ?>
    Я не вьезжаю чего оно не пашет. Завтра посмотрю еще раз - пойму в чем ошибка. На сонную голову думать вообще не могу.
    Не срочно надеюсь?
     
Thread Status:
Not open for further replies.