За последние 24 часа нас посетили 16640 программистов и 1679 роботов. Сейчас ищут 1016 программистов ...

Не понятное количество итераций

Тема в разделе "PHP для новичков", создана пользователем Den Wotton, 3 фев 2017.

  1. Den Wotton

    Den Wotton Новичок

    С нами с:
    3 фев 2017
    Сообщения:
    10
    Симпатии:
    0
    Решил создать парсер примитивный , появилась проблема с функцией а конкретно с цыклом foreach он проводи тпочему то именно 58 итераций , то есть закидывает мне в базу данных 58 одинаковых полей которые обнаружило по шаблону регулярных выражений переменной $pattern вот код функции
    PHP:
    1. function search($pattern){
    2.   $mysqli = new mysqli ("localhost", "root", "", "dbname");
    3.   if ($mysqli->connect_errno) {
    4.     printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
    5.     exit();
    6.   }
    7.  
    8.   $result = $mysqli->query ("SELECT * FROM dbname.template ") or die ('ERROR:'. $mysqli->error);
    9.   for($i=0;$row = mysqli_fetch_assoc($result);$i++){
    10.     $greed[$i] = $row;
    11.  
    12.     foreach ($greed as $row) {
    13.       if(preg_match("/$pattern/", $row['title']) or preg_match("/$pattern/", $row['description'])
    14.        or preg_match("/$pattern/", $row['content'])){
    15.  
    16.           $mysqli->query = ("INSERT INTO `dbname`.`content` (`id`, `title`, `pubDate`, `content`)
    17.            VALUES (NULL,'".$row['title']."','".$row['pudDate']."','".$row['content']."')";)
    18.  
    19.       }
    20.     }
    21.   }
    22. }
    Главный вопрос в том как мне сделать так чтобы отправляло только одну найденное поле в бд и соответственно переходило для проверки на следующие
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Просто парсерщики должны страдать.
     
  3. Den Wotton

    Den Wotton Новичок

    С нами с:
    3 фев 2017
    Сообщения:
    10
    Симпатии:
    0
    Спасибо за ответ , но я уже нашел решение ,забыл закрыть тему , сейчас исправлю
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Не исправишь... По крайней мере самостоятельно. Ну и даже если б мог, от моих злорадных комментариев это не поможет.
    --- Добавлено ---
    Заодно, прошу ознакомиться с постом по ссылке в моей подписи. А конкретно с пунктом 7:
     
  5. Den Wotton

    Den Wotton Новичок

    С нами с:
    3 фев 2017
    Сообщения:
    10
    Симпатии:
    0
    нууу....
    смотри )
    вот что придумал , самостоятельно кстати)
    PHP:
    1. function search($pattern){
    2.   $mysqli = new mysqli ("localhost", "root", "", "dbname");
    3.   if ($mysqli->connect_errno) {
    4.     printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
    5.     exit();
    6.   }
    7.   $query = "SELECT * FROM dbname.template";
    8.   $result = mysqli_query($mysqli,$query);
    9.     while($row = mysqli_fetch_assoc($result)){
    10.           if(preg_match("/$pattern/", $row['title']) or preg_match("/$pattern/", $row['content'])){
    11.             $resultContent = "INSERT INTO `dbname`.`content` (`id`, `title`, `pubDate`, `content`)
    12.              VALUES (NULL,'".$row['title']."','".$row['pubDate']."','".$row['content']."')";
    13.               $mysqli->query ($resultContent);
    14.             $deleteFind = "DELETE FROM `dbname`.`template` WHERE `template`.`title` = '".$row['title']."'";
    15.               $mysqli->query ($deleteFind);
    16.               }
    17.     }
    18.   $mysqli->close();
    19. }
    --- Добавлено ---
    Кстати это я уже прочитал буквально 4 минуты назад, я не ворую ведь контент это просто парсинг рсс файлов общедоступных чисто для практики
    вот юрлы
    $url_1 = "http://nashigroshi.org/feed/"; //encoded
    $url_2 = "http://k.img.com.ua/rss/ru/all_news2.0.xml"; //fulltext
    $url_3 = "https://www.rbc.ua/static/rss/all.rus.rss.xml"; //fulltext/encoded
    $url_4 = "http://fakty.ua/rss_feed/ukraina"; //link <guid>
    --- Добавлено ---
    есть еще вопрос а что делать если в xml встречаешь этот тег <guid> как его правильно разобрать ? или никак и это просто ссылка ?
    --- Добавлено ---
    чет я протупил, только дошло, а тему закрыть нельзя если она уже не интересна ?
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Тогда у меня вопрос - этот RSS тебе в каком формате приходит? XML? Json? И для того и для того в PHP есть нативный парсер, который сразу конвертит файл/текст в объект. С вероятностью 99% это XML, сдается мне.
    --- Добавлено ---
    Ну мало ли, может кому-то интересна. Пусть будет открыта, почему бы нет. Так-то можно и закрыть и удалить, и каждый пост в отдельный тред превратить, но зачем? :)