За последние 24 часа нас посетили 52222 программиста и 3210 роботов. Сейчас ищут 1482 программиста ...

strpos

Тема в разделе "PHP для новичков", создана пользователем Kvandaik, 8 авг 2018.

  1. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    Есть цикл перебора ссылок их данные выгружаются в переменную . Как сделать поиск в цикле чтобы при первом прохождении когда сайт парсится находила там значение строки
    Код (Text):
    1. $urls = array(
    2. 'http://1***.236/start/start.htm',
    3. 'http://1***.193/start/start.htm',
    4. 'http://1***.245/start/start.htm',
    5. 'http://1***.236/start/start.htm',
    6. 'http://1***.193/start/start.htm',
    7. 'http://1***.245/start/start.htm',
    8. );
    9.  
    10. $mh = curl_multi_init();
    11.  
    12. foreach ($urls as $i => $url) {
    13.     $conn[$i]=curl_init($url);
    14.     curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);  //ничего в браузер не давать
    15.     curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,10); //таймаут соединения
    16.     curl_multi_add_handle ($mh,$conn[$i]);
    17. }
    18.  
    19. do { curl_multi_exec($mh,$active); } while ($active); //Пока все соединения не отработают
    20. for ($i=0; $i<count($urls); $i++) {                //разбор полетов
    21.     $res[$i]=curl_multi_getcontent($conn[$i]);        //ответ сервера в переменную
    22.     curl_multi_remove_handle($mh,$conn[$i]);
    23.     curl_close($conn[$i]);
    24.  
    25. $res1=implode(",", $res);
    26. $main_str = htmlentities($res1);
    27. //echo '<pre>'  .$main_str.'<pre>' ;
     
  2. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Ну ты хоть точку соизволил поставить...фух.. с раза 5го понял. Ничего заумного в этой функции нету, http://www.php.su/strpos , ты не можешь написать это сам?
     
  3. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    if (strpos($main_str,'PtrVal[1] = &quot;2&quot;') || strpos($main_str, $url) !== false);
    Вот тут думаю по двум значениям в моих сайтах там есть сведения по их же урлам если два слова нашлись то выдало
     
  4. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Если тебе нужно что бы по двум словам сразу то тебе надо не "ИЛИ - ||" а "И &&".

    Код (Text):
    1. if (strpos($main_str,'PtrVal[1] = &quot;2&quot;') || strpos($main_str, $url) !== false);
    Где ты это используешь? Как ты $url передаёшь, если она в области видимости цикла foreach на 12 строке? $main_str она ещё в цикле for на 20 строке или цикл закрывается раньше например на 24 строке? Что такое область видимости?
     
  5. Kvandaik

    Kvandaik Новичок

    С нами с:
    5 июл 2018
    Сообщения:
    121
    Симпатии:
    1
    можно параллельно цикл?
    foreach($urls as $i => $url1){
    if (strpos($main_str,'PtrVal[1] = &quot;2&quot;') && strpos($main_str, $url1) !== false);{
    echo 'x';
    }
    }
     
  6. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Для того чтобы паралельно сделать тебе нужно запустить в несколько потоков, в php их вроде нету или асинхронно что php не умеет.

    Что ты подразумеваешь под паралельно? Может тебе проще на функции все разбить и передавать в них всё что нужно?