developer
BestMaster, # BestMaster (28.05.2019 / 22:32)
developer, Pasta yozibdi namunani
johncms kutubxonasidagi maqolalarni bazaga yozib oladigan parser tuzish kerak
51 soniyadan keyin yozdi:
o'zim uni qanday yasash boyicha miyada algoritmi borku amalga qollay olmayapman
4 daqiqa 45 soniyadan keyin yozdi:
  1. Запрос в MySQL-базу на создание таблицы для цитат
  2.  
  3. CREATE TABLE IF NOT EXISTS `bash` (
  4.  
  5. `id` int(11) NOT NULL AUTO_INCREMENT,
  6.  
  7. `quote_id` int(11) NOT NULL,
  8.  
  9. `quote_text` mediumtext NOT NULL,
  10.  
  11. PRIMARY KEY (`id`)
  12.  
  13. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  14.  
  15.  
  16.  
  17.  
  18.  
  19. PHP-код парсинга
  20.  
  21. <?php
  22.  
  23. //Отключаем лимит ожидания и объявляем переменные
  24.  
  25.  
  26. $content=NULL;$num_pages=NULL;
  27.  
  28. //Подключение к базе
  29.  
  30. //Подключаемся к базе данных
  31.  
  32. define ("HOST", "localhost");
  33.  
  34. define ("DATABASE", "ваша база данных");
  35.  
  36. define ("MYSQL_USER", "ваш юзер");
  37.  
  38. define ("MYSQL_PASS", "ваш пароль");
  39.  
  40. mysql_connect(HOST, MYSQL_USER, MYSQL_PASS);mysql_query("set names utf8");mysql_select_db(DATABASE);
  41.  
  42. //Узнаём кол-во страниц
  43.  
  44. $content=file_get_contents('http://bash.im/');
  45.  
  46. preg_match('|max="(.*?)"|is',$content,$num_pages);
  47.  
  48. //Парсим каждую страницу
  49.  
  50. for ($i=1; $i <= $num_pages[1]; $i++){$i2=false;
  51.  
  52. //Грузим страницы, вырезаем цитаты
  53.  
  54. $content=file_get_contents('http://bash.im/index/'.$i);
  55.  
  56. $quotes=explode('<span class="date">',$content);
  57.  
  58. foreach($quotes as $quote){
  59.  
  60. if($i2==false){$i2=true;continue;}
  61.  
  62. //Номер цитаты
  63.  
  64. preg_match('|class="id">#(.*?)</a>|is',$quote,$quote_id);
  65.  
  66. //Текст цитаты
  67.  
  68. preg_match('|<div class="text">(.*?)</div>|is',$quote,$quote_text);
  69.  
  70. //Конвертация текста в UTF-8 и экранирование символов
  71.  
  72. $quote_text=strip_tags(addslashes(htmlspecialchars(trim(iconv("windows-1251","UTF-8",$quote_text[1])))));
  73.  
  74. //Вписываем в базу
  75.  
  76. if($quote_text!=NULL){mysql_query("INSERT INTO `bash`(`id`,`quote_id`,`quote_text`) VALUES (NULL,'{$quote_id[1]}','{$quote_text}')");}
  77.  
  78. }
  79.  
  80. //От перенагрузки
  81.  
  82. sleep(2);
  83.  
  84. }
  85. ?>


shu kodni johncmsga moslash kerak
12 soat 14 daqiqa 16 soniyadan keyin yozdi:
sozni har hil belgilardan qanday tozalaydi qoshtirnoqlani orniga galati belgilar chiqib qolyapti