Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсер не удаляет теги

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
gigs
Отправлено: 14 Августа, 2012 - 00:05:14
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




Вомогите пожалуйста, я вот создал такой парсер:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header("Content-type: text/html; charset=utf-8");
  3.   //Настройки парсера
  4.  
  5.   //URL для парсинга контента
  6.  
  7.   $url = 'http://site.ru';
  8.  
  9.  
  10.  
  11.   //Стартовый тег для парсинга контента
  12.  
  13.   //тег который стоит перед началом нужного участка кода для парсинга
  14.  
  15.   //и используется 1 раз
  16.  
  17.   $start = '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="chanel-prog">';
  18.  
  19.  
  20.  
  21.   //Конечный тег участка кода для парсинга
  22.  
  23.   //Тег который стоит после нужного участка который будем парсить
  24.  
  25.   $finish = '</table>';
  26.  
  27.  
  28.  
  29.   //Создаём функцию парсера
  30.  
  31.   function parser($url,$start,$finish) {
  32.  
  33.  
  34.  
  35.   //Получаем весь код страницы
  36.  
  37.   $content = file_get_contents($url);
  38.  
  39.  
  40.  
  41.   //Ищем позицию с которой мы будем вырезать код для дальнейшего использования
  42.  
  43.   $position = strpos($content, $start);
  44.  
  45.  
  46.  
  47.   //Вырезаем нужный блок
  48.  
  49.   $content = substr($content, $position);
  50.  
  51.   $position = strpos($content, $finish);
  52.  
  53.  
  54.  
  55.   //Вырезаем код
  56.  
  57.   $content = substr($content, 0, $position);
  58.  
  59.  
  60.  
  61.   //Вырезаем HTML теги
  62.  
  63.   //Для добавления\удаления используемых тегов допишите\удалите теги
  64.  
  65.   $content = strip_tags($content);
  66.  
  67.  
  68.  
  69.   //Debug (Проверка того, что выводит парсер)
  70.  
  71.   echo nl2br($content);
  72.  
  73.  
  74.  
  75.   //Открываем файл для чтения и перезаписи
  76.  
  77.   $fp = fopen('article.txt', 'write');
  78.  
  79.  
  80.  
  81.   //Записываем код в файл
  82.  
  83.   fwrite($fp, nl2br($content));
  84.  
  85.  
  86.  
  87.   //Закрываем файл
  88.  
  89.   fclose($fp);
  90.  
  91.  
  92.  
  93.   //Возвращаем напарсеный контент
  94.  
  95.   return $content;
  96.  
  97.   }
  98.  
  99.  
  100.  //Вызываем функцию парсинга
  101.  
  102.   parser($url, $start, $finish);
  103.  
  104. ?>


сам контент он парсит нормально но моя проблема в том что когда он сохраняет контент в текстовый файл то контент сохраняется вместе с тегами хотя у меня стоит там strip_tags. Помогите разобраться почему парсер не удаляет теги.

(Отредактировано автором: 14 Августа, 2012 - 00:05:49)

 
 Top
DelphinPRO
Отправлено: 14 Августа, 2012 - 05:41:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




nl2br добавляет теги <BR>


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Koss
Отправлено: 14 Августа, 2012 - 15:07:58
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




strip_tags - указывает какие надо оставить для парсинга теги!!!
$content = strip_tags($content, "<div><a>");
<div><a> - это он оставит
Вам надо в функции сделать удаление ненужных тегов и т.д.
Пример:
else if(preg_match('/<>|online|анонс|^|комментарии/', $res)){
$res = '';
}
 
 Top
gigs
Отправлено: 14 Августа, 2012 - 19:55:10
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




я сделал так, вместо n2br поставил trim и все теги <br> удалило что мне и нужно было, но мне нужно еще удалить два определленых дива, вот они: <div class="ch-time"> </div> и <div class="ch-title"> </div> но чтобы текст который в них вложен остался. Как это можно сделать ? я только знаю что с помощью регулярных выражений но я в них пока не шарю. Буду очень благодарен за помощь.
 
 Top
Koss
Отправлено: 14 Августа, 2012 - 20:19:17
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Подожди ты хочешь чтоб между <div class="ch-time"> и <div class="ch-title"> остался текст? Я так тебя понял!?
Больше не чего тебя не интересует кроме этого текста?
 
 Top
gigs
Отправлено: 14 Августа, 2012 - 20:32:18
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




исходный код который я парсю такой:
CODE (html):
скопировать код в буфер обмена
  1. <div class="time-block">
  2.  
  3.   <div class="ch-time">03:40</div>
  4.  
  5.   <div class="ch-title"> ТСН</div>
  6. </div>
  7.  
  8.  
  9.                
  10.  
  11.                         <div class="time-block">
  12.  
  13.   <div class="ch-time">04:10</div>
  14.  
  15.   <div class="ch-title">Т/с "Немного не в себе"</div>
  16. </div>
  17.  
  18.  
  19.                
  20.  
  21.                         <div class="time-block">
  22.  
  23.   <div class="ch-time">06:00</div>
  24.  
  25.   <div class="ch-title"> Служба розыска детей</div>
  26. </div>
  27.  


но в результате мне текст выводит вот так:

03:40
ТСН
04:10
Т/с "Немного не в себе"
06:00
Служба розыска детей

а мне нужно что б выводило вот так:

03:40 ТСН
04:10 Т/с "Немного не в себе"
06:00 Служба розыска детей

и чтобы это сделать нужно удалить <div class="ch-time"> и <div class="ch-title"> а оставить только <div class="time-block">. Я пробовал в ручную их удалить и у меня выводило так как надо, но нужно сделать так что б оно само удаляло эти теги.
 
 Top
Koss
Отправлено: 14 Августа, 2012 - 20:48:05
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




но в результате мне текст выводит вот так:

03:40
ТСН
04:10
Т/с "Немного не в себе"
06:00
Служба розыска детей
я не пойму,а что в парсинге не так если выводит всё чисто?!
этот результ помести в таблицу и он будет идти как ты хочешь
 
 Top
gigs
Отправлено: 14 Августа, 2012 - 20:52:36
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




просто оно выдает время а снизу уже анонс, а мне нужно чтоб было время а с права анонс вот так: 06:00 Служба розыска детей.

А что вы имеете ввиду помести в таблицу, можно по подробней на этом месте?
 
 Top
gigs
Отправлено: 15 Августа, 2012 - 21:10:50
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




все я уже разобрался, а как можно сделать что б данные парсились в базу данных а не в файл как у меня ?
(Добавление)
пробовал вот так
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $db = mysql_connect("localhost", "123456", "123456");
  4. mysql_select_db("mybaza",$db);
  5. mysql_query('INSERT INTO table (`first`) VALUES ("article.txt")');
  6.  
  7.  
  8. ?>


но ничего не получилось.
 
 Top
KingStar
Отправлено: 15 Августа, 2012 - 22:08:57
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO table_name (`first`) VALUES ('article.txt')


либо

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO table_name SET `first` = 'article.txt'

(Отредактировано автором: 15 Августа, 2012 - 22:17:35)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
gigs
Отправлено: 15 Августа, 2012 - 22:22:23
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




пробовал и так и так и мне выдает вот такую ошибку: Parse error: syntax error, unexpected T_STRING in D:\xampp\htdocs\site\data.php on line 5

(Отредактировано автором: 15 Августа, 2012 - 22:22:54)

 
 Top
KingStar
Отправлено: 15 Августа, 2012 - 22:29:52
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




Такой запрос, как приведен работает. Нужно не в одинарные кавычки заключать, а в в обратные одинарные.

и еще, у тебя таблица так и называется - table ???
(Добавление)
PHP:
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `table` (`first`) VALUES ('article.txt')");


-----
То что программа работает, не означает что она написана правильно!
 
 Top
gigs
Отправлено: 15 Августа, 2012 - 22:39:58
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




нет таблица у меня называется news смотри я делал так
PHP:
скопировать код в буфер обмена
  1. $db = mysql_connect("localhost", "123456", "123456");
  2. mysql_select_db("mybaza",$db);
  3. mysql_query("INSERT INTO 'news' (`first`) VALUES ('article.txt')");

но типерь ошибки нет, но данные не додаются

вобще моя задача заключается в том что б занести данные из текстового файла в базу, но в интернете на эту тему ничего нету

(Отредактировано автором: 15 Августа, 2012 - 22:44:01)

 
 Top
KingStar
Отправлено: 15 Августа, 2012 - 22:42:45
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




тебе построчно нужно записать, или все содержимое в одну колонку???
(Добавление)
тебе нужно получить в переменную содержимое файла article.txt, и в запрос вставить переменную
(Добавление)
что-то вроде
PHP:
скопировать код в буфер обмена
  1. $article = file_get_contents('article.txt');
  2. mysql_query("INSERT INTO `news` (`first`) VALUES ('$article')");


-----
То что программа работает, не означает что она написана правильно!
 
 Top
gigs
Отправлено: 15 Августа, 2012 - 22:47:45
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Апр. 2012  
Откуда: Киев


Помог: 0 раз(а)




в самом article.txt у меня вот такой код
CODE (html):
скопировать код в буфер обмена
  1. <style>
  2. .ch-time {
  3. float:left;
  4. margin-right: 5px;
  5. }
  6. </style>
  7.  
  8. <div class="time-block">
  9.   <div class="ch-time">00:10</div>
  10.   <div class="ch-title">Х/ф "Человек-невидимка-2"</div>
  11. </div>
  12.  
  13.                
  14.                         <div class="time-block">
  15.   <div class="ch-time">01:50</div>
  16.   <div class="ch-title">Х/ф "Парень из Филадельфии"</div>
  17. </div>
  18.  
  19.                
  20.                         <div class="time-block">
  21.   <div class="ch-time">03:15</div>
  22.   <div class="ch-title">Т/с "Вольф Мессинг. Человек, который видел сквозь время"</div>
  23. </div>
  24.  
  25.                
  26.                         <div class="time-block">
  27.   <div class="ch-time">04:15</div>
  28.   <div class="ch-title">Т/с "Немного не в себе"</div>
  29. </div>
  30.  
  31.                
  32.                         <div class="time-block">
  33.   <div class="ch-time">06:00</div>
  34.   <div class="ch-title"> Служба розыска детей</div>
  35. </div>
  36.  
  37.                
  38.                         <div class="time-block">
  39.   <div class="ch-time">06:05</div>
  40.   <div class="ch-title"> ТСН</div>
  41. </div>
  42.  
  43.                
  44.                         <div class="time-block">
  45.   <div class="ch-time">06:45</div>
  46.   <div class="ch-title"> Завтрак с 1+1</div>
  47. </div>
  48.  
  49.                
  50.                         <div class="time-block">
  51.   <div class="ch-time">07:00</div>
  52.   <div class="ch-title"> ТСН</div>
  53. </div>


и так дальше, мне нужно эго записать в базу из текстового файла
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB