- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
я в упор не вижу где цикл повторяется.
Так там 2 цикла вообще.
Зачем второй и почему preg_match_all, а не preg_match в данном случае. И раз уж preg_match_all то почему во втором цикле ты ориентируешься на количество ссылок, а не на количество совпадений.
Потому что я знаю что в каждой ссылке по 1 совпадению. ФОР переписал на ИФ - ничего не изменилось
и повторюсь - если вместо $db->query выведу запрос через echo - он выводиться 5 раз. От чего же в базу пишется два раза по 5 ?
---------- Добавлено 20.05.2019 в 18:43 ----------
Проблему с тем что в базу пишет два раза по 5 решил - нужно было добавить первичный ключ на поле ID
Осталось понять почему вместо данных пишется Array
Проблему с тем что в базу пишет два раза по 5 решил - нужно было добавить первичный ключ на поле ID
Теперь просто второй раз не пишет с тем-же ID а количество запросов от этого не поменялось
Осталось понять почему вместо данных пишется Array
Так попробуй
$db->query("INSERT INTO `page` (`id`, `name`, `h1`, `text`) VALUES ($i, '{$title[0][1]}', '{$name[0][1]}', '{$text[0][4]}');")
только то, что раньше в БД добавил стирать не забывай
АХАХА решил вопрос!!!!!!!!!!! ЭТО ПИ***Ц
4 часа млять потратил - а дело в кавычках!!!!!!!
вот так нужно переменную записывать в запрос '".$text[0][2]."'
двойные кавычки внутри одинарных
двойные кавычки внутри одинарных
одинарные внутри двойных.
Samail, спс - решение с фигурными скобками лучше, меньше путаницы с кавычками!
Dram,
Остановитесь на минутку.
Погуглите sql иньекции и зачем нужно экранирование.
Не забывайте устанавливать кодировку после соединения с базой и выясните зачем это надо.
Используйте или https://www.php.net/manual/ru/mysqli.real-escape-string.php экранирование или плейсхолдеры https://www.php.net/manual/ru/mysqli.prepare.php , второе более модно.
Итак регулярки начал понимать значительно лучше, перешел к curl
Делаю домашнее задание.
Есть 5 ссылок, нужно пройтись по ним курлом, вытащить title, h1 и текст и записать это в базу.
Вот наваял я код и не погу догнать два момента:
1. Какого лешего в базу пишется Array[1] вместо данных
2. Какого пишется два раза, я в упор не вижу где цикл повторяется. Вот что в базе:
если вместо $db->query выведу запрос через echo - он выводиться 5 раз. От чего же в базу пишется два раза по 5 ?
Кодить на столько тяжело на сколько выглядит?
Продолжаю изучать phpQuery и запнулся вот о что... нужно найти все ссылки с нужным классом.
Как искать по отдельности или класс или ссылку, я знаю, а как все вместе?
пробую так, но явно где-то ошибка
$elem = $pq->find('a')->find('.www')->html();
var_dump($elem);
---------- Добавлено 21.05.2019 в 17:15 ----------
Ларчик просто открывался :))) $elem = $pq->find('a.www')->html();
---------- Добавлено 21.05.2019 в 17:28 ----------
Еще непонятка: так все нормально
$elem = $pq->find('.pag a');
$text = $elem->html();
foreach ($elem as $item) {
$pqLink = pq($item);
echo $pqLink .'<br>';
}
Так ошибка цикла - почему? Warning: Invalid argument supplied for foreach()
$elem = $pq->find('.pag a')->html();
foreach ($elem as $item) {
$pqLink = pq($item);
echo $pqLink .'<br>';
}
Дошел до парсинга реальных сайтов 😎
задача - получить названия и картинки пицц. Вот сваял я код, все получил.
$pars = getPageByUrl ($links);
require_once 'C:\OSPanel\domains\localhost\phpQuery.php';
$pq = phpQuery::newDocument($pars);
$elem = $pq->find('span')->remove();
$elem = $pq->find('.product-card__title');
$kartinka = $pq->find('.product-card-media__element');
$text = $elem->html();
//var_dump($text);
foreach ($elem as $pizza) {
$pqLink = pq($pizza);
echo $pqLink . "<br>";
}
foreach ($kartinka as $item) {
$src = pq($item);
$img = $src->attr('src');
echo $img . "<br>";
}
И захотелось мне вывести красиво :
Название - картинка
и вот тут я застрял на 2 часа :))) как можно совместить два цикла?