- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Еще прошу совета - вот есть регулярка (.*) - любой символ 0 и более раз.
Но она не понимает пробелы. Как в нее добавить пробел? и еще нужно учесть "ничего"
чтобы получилось (пробел или несколько пробелов, а может и не быть пробела тогда тег сразу закрывается|любой символ 0 и более раз)
чтобы нагляднее https://regex101.com/r/OG8Aw4/1 почему регулярка
вообще ничего не цепляет?
Я правильно понимаю что \s* - нет пробела, есть пробел, несколько пробелов?
Еще прошу совета - вот есть регулярка (.*) - любой символ 0 и более раз.
Но она не понимает пробелы.
Понимает, наравне со всеми остальными.
почему регулярка вообще ничего не цепляет?
Я правильно понимаю что \s* - нет пробела, есть пробел, несколько пробелов?
Попробуй варианты
<p.+www(.*)>(.*)</p>
\s+.* это я правильно понимаю - точно один или более пробелов + 1 или более символов
Правильнее сказать не символов, а любых символов. И любых - от 0 и больше. Даже вот так проще
Один пробел, а дальше любые символы, включая пробелы.Спасибо!!!!!!!!!!
Для отладки регулярок очень рекомендую сервис: https://regex101.com/
А я загружаю нужный мне фрагмент для парсинга в NotePad++ и там тестирую регулярки.
распарсивать его целиком немного долго и геморно
Ну какой-нибудь Датакол быстро парсит, даже с кучей всяких замен и загрузкой фоток. Там просто надо норм. настроить, в первую очередь страницы определить конкретные, тогда летает.
Снова вопрос про регулярки, почему эта регуляка
не цепляет эту конструкцию
насколько я себе понимаю то что написал -это значит
сколько угодно пробелов после <p
затем что угодно между class и more
отсутствие пробелов после more
все что угодно внутри этого тега с данным классом.
Где ошибаюсь?
---------- Добавлено 18.05.2019 в 18:12 ----------
все - решил вопрос так -
или так даже лучше получилось
почему эта регулярка
не цепляет эту конструкцию
Я всё-таки отвечу :)
По двум причинам не цепляет:
1. В class=\'more\' > пробел всё же есть.
2. [^\s] - это один символ, а их там больше.
Итак регулярки начал понимать значительно лучше, перешел к curl
Делаю домашнее задание.
Есть 5 ссылок, нужно пройтись по ним курлом, вытащить title, h1 и текст и записать это в базу.
Вот наваял я код и не погу догнать два момента:
1. Какого лешего в базу пишется Array[1] вместо данных
2. Какого пишется два раза, я в упор не вижу где цикл повторяется. Вот что в базе:
$db = mysqli_connect('localhost', 'mysql', 'mysql', 'my_project')
or die ('Ошибка соединения с MySQL-сервером');
$links = [ 'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/1.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/2.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/3.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/4.php',
'http://code.mu/exercises/advanced/php/parsing/rabota-s-bibliotekoj-curl-v-php/1/5.php',
];
function getPageByUrl ($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($curl);
if ($result === false) { echo "Ошибка CURL: " . curl_error($curl);
return false;
} else {
return $result;
}
}
$i=0;
foreach ($links as $item){
$i++;
$pars = getPageByUrl ($item);
preg_match_all('~<title>(.*)</title>~m',$pars, $title, PREG_SET_ORDER, 0);
preg_match_all('~<h1>(.*)</h1>~m',$pars, $name, PREG_SET_ORDER, 0);
preg_match_all('~<div\s.*(.*)main(.*)>(.*)</h1>(.*)</div>~msU',$pars, $text, PREG_SET_ORDER, 0);
if ($i>=0 && $i<= count($links)) {
$db->query("INSERT INTO `page` (`id`, `name`, `h1`, `text`) VALUES ($i, '$title[0][1]', '$name[0][1]', '$text[0][4]');")
or die ('Ошибка запроса');
}
}
если вместо $db->query выведу запрос через echo - он выводиться 5 раз. От чего же в базу пишется два раза по 5 ?