Решил создать парсер примитивный , появилась проблема с функцией а конкретно с цыклом foreach он проводи тпочему то именно 58 итераций , то есть закидывает мне в базу данных 58 одинаковых полей которые обнаружило по шаблону регулярных выражений переменной $pattern вот код функции PHP: function search($pattern){ $mysqli = new mysqli ("localhost", "root", "", "dbname"); if ($mysqli->connect_errno) { printf("Не удалось подключиться: %s\n", $mysqli->connect_error); exit(); } $result = $mysqli->query ("SELECT * FROM dbname.template ") or die ('ERROR:'. $mysqli->error); for($i=0;$row = mysqli_fetch_assoc($result);$i++){ $greed[$i] = $row; foreach ($greed as $row) { if(preg_match("/$pattern/", $row['title']) or preg_match("/$pattern/", $row['description']) or preg_match("/$pattern/", $row['content'])){ $mysqli->query = ("INSERT INTO `dbname`.`content` (`id`, `title`, `pubDate`, `content`) VALUES (NULL,'".$row['title']."','".$row['pudDate']."','".$row['content']."')";) } } } } Главный вопрос в том как мне сделать так чтобы отправляло только одну найденное поле в бд и соответственно переходило для проверки на следующие
Не исправишь... По крайней мере самостоятельно. Ну и даже если б мог, от моих злорадных комментариев это не поможет. --- Добавлено --- Заодно, прошу ознакомиться с постом по ссылке в моей подписи. А конкретно с пунктом 7:
нууу.... смотри ) вот что придумал , самостоятельно кстати) PHP: function search($pattern){ $mysqli = new mysqli ("localhost", "root", "", "dbname"); if ($mysqli->connect_errno) { printf("Не удалось подключиться: %s\n", $mysqli->connect_error); exit(); } $query = "SELECT * FROM dbname.template"; $result = mysqli_query($mysqli,$query); while($row = mysqli_fetch_assoc($result)){ if(preg_match("/$pattern/", $row['title']) or preg_match("/$pattern/", $row['content'])){ $resultContent = "INSERT INTO `dbname`.`content` (`id`, `title`, `pubDate`, `content`) VALUES (NULL,'".$row['title']."','".$row['pubDate']."','".$row['content']."')"; $mysqli->query ($resultContent); $deleteFind = "DELETE FROM `dbname`.`template` WHERE `template`.`title` = '".$row['title']."'"; $mysqli->query ($deleteFind); } } $mysqli->close(); } --- Добавлено --- Кстати это я уже прочитал буквально 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> как его правильно разобрать ? или никак и это просто ссылка ? --- Добавлено --- чет я протупил, только дошло, а тему закрыть нельзя если она уже не интересна ?
Тогда у меня вопрос - этот RSS тебе в каком формате приходит? XML? Json? И для того и для того в PHP есть нативный парсер, который сразу конвертит файл/текст в объект. С вероятностью 99% это XML, сдается мне. --- Добавлено --- Ну мало ли, может кому-то интересна. Пусть будет открыта, почему бы нет. Так-то можно и закрыть и удалить, и каждый пост в отдельный тред превратить, но зачем?