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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
borus
Отправлено: 19 Декабря, 2012 - 13:09:23
Post Id



Новичок


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


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




Здравствуйте!
На странице работает следующий код грабера:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. //header('Content-type:text/html;charset=utf-8');
  3.  
  4. /*Получение данных.*/
  5. function data($path,$host){
  6.     $fp = fsockopen($host, 80);
  7.     if (!$fp){die('ошибка');}
  8.     else{
  9.         $out = "GET $path HTTP/1.0\r\n";
  10.         $out .= "Accept: image/gif, application/xhtml+xml, */*\r\n";
  11.         $out .= "Accept-Language: ru\r\n";
  12.         $out .= "Host: $host\r\n";
  13.         //прикинемся оперой-мини
  14.         $out .= "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n";
  15.         $out .= "Cache-Control: no-cache\r\n";
  16.         $out .= "Connection: Close\r\n\r\n";
  17.         fwrite($fp, $out);
  18.         $headers = "";
  19.         while ($str = trim(fgets($fp)))
  20.         $headers .= "$str\n";
  21.         $body = "";
  22.         while (!feof($fp))
  23.         $body .= fgets($fp);
  24.         fclose($fp);
  25.     }
  26.     return $body;
  27. }
  28.  
  29. $host='downloads.1c.ru';
  30. $path='/release_info/categ_js.jsp?GroupID=88';
  31. //запуск
  32. $s=data($path,$host);
  33. //обрабатываем (ВТОРОЙ ЭТАП)
  34. function process($s){
  35.         $s=mb_convert_encoding($s,'UTF-8','CP1251');
  36.         $s = preg_replace('/document\.write\(\'(.*?)\'\);/is', '$1', $s);
  37.         $s=stristr($s,'<table border="1" cellpadding="3" cellspacing="0" width="100%" class="content">');
  38. //      $s = preg_replace('/\s////\s\d{2,3}\s-->\s/is', '', $s); // ! Это не работает !
  39.         return $s;
  40. }
  41. $s=process($s);
  42.  
  43. //выдаем результат (ТРЕТИЙ ЭТАП)
  44. echo 'here is "var_dump(htmlspecialchars(var_export($s, TRUE)));" output:<br/><br/>';
  45. var_dump(htmlspecialchars(var_export($s, TRUE)));
  46. echo "<br/><br/><br/>";
  47. echo 'And here is "echo $s;" output:<br/><br/>';
  48. echo $s;
  49. ?>

Пытался удалить группы символов типа " // 121 --> " (пробелы в начале и конце) с помощью команды
CODE (text):
скопировать код в буфер обмена
  1. $s = preg_replace('/\s////\s\d{2,3}\s-->\s/is', '', $s);

работает не так как ожидал, если раскоментить эту строку.

Скажите, в чем шаблон '/\s////\s\d{2,3}\s-->\s/is' неправилен?
 
 Top
vlados
Отправлено: 19 Декабря, 2012 - 13:18:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


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

[+][+][+]


(Отредактировано автором: 19 Декабря, 2012 - 13:19:09)

 
 Top
borus
Отправлено: 19 Декабря, 2012 - 13:27:36
Post Id



Новичок


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


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




vlados пишет:

выдает NULL
 
 Top
vlados
Отправлено: 19 Декабря, 2012 - 13:33:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


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

[+][+][+]


preg_replace() возвращает массив, если параметр subject является массивом, иначе возвращается строка.

Если найдены совпадения, возвращается новая версия subject, иначе subject возвращается нетронутым, в случае ошибки возвращается NULL.

Регулярное выражение которое я написал, правильное (вроде).

(Отредактировано автором: 19 Декабря, 2012 - 13:33:33)

 
 Top
borus
Отправлено: 19 Декабря, 2012 - 13:55:42
Post Id



Новичок


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


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




Вы же пишите
vlados пишет:
в случае ошибки возвращается NULL.

выходит не правильное регвыражение?
вот это сработало
'/\/\/\s\d{2,3}\s-->\s/is'

(Отредактировано автором: 19 Декабря, 2012 - 13:59:12)

 
 Top
borus
Отправлено: 19 Декабря, 2012 - 15:17:48
Post Id



Новичок


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


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




пытаюсь шаблоном '/<tr.+?Конвертация данных.+?<\/tr>/' удалить строку таблицы.
что-то не получается. Прошу помощи
Прикреплено изображение (Нажмите для увеличения)
шаблон под строку таблицы.JPG
 
 Top
sKaa
Отправлено: 19 Декабря, 2012 - 15:29:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


borus, опишите нормально задачу.
 
 Top
borus
Отправлено: 19 Декабря, 2012 - 15:35:52
Post Id



Новичок


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


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




sKaa пишет:
borus, опишите нормально задачу.

этим кодом
CODE (htmlphp):
скопировать код в буфер обмена
  1. $p='/<tr.+?Конвертация данных.+?<\/tr>/';
  2. $s = preg_replace($p, '', $s);

пытаюсь поудалять строки из переменной $s, содержащей html код таблицы.
Типовой html-код строк таблицы, которые надо вырезать из переменной $s показан во вложении
Прикреплено изображение (Нажмите для увеличения)
шаблон под строку таблицы.JPG

(Отредактировано автором: 20 Декабря, 2012 - 11:40:42)

 
 Top
LShark
Отправлено: 20 Декабря, 2012 - 11:38:53
Post Id



Частый гость


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


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




почему .+?
может лучше .*?


-----
Истина прежде всего в том, что...
 
 Top
borus
Отправлено: 21 Декабря, 2012 - 13:56:50
Post Id



Новичок


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


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




LShark пишет:
почему .+?
может лучше .*?

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB