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
Форумы портала PHP.SU :: Версия для печати :: Как исправить шаблон?
Форумы портала PHP.SU » » Вопросы новичков » Как исправить шаблон?

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

1. borus - 19 Декабря, 2012 - 13:09:23 - перейти к сообщению
Здравствуйте!
На странице работает следующий код грабера:
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' неправилен?
2. vlados - 19 Декабря, 2012 - 13:18:47 - перейти к сообщению
3. borus - 19 Декабря, 2012 - 13:27:36 - перейти к сообщению
vlados пишет:

выдает NULL
4. vlados - 19 Декабря, 2012 - 13:33:06 - перейти к сообщению
preg_replace() возвращает массив, если параметр subject является массивом, иначе возвращается строка.

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

Регулярное выражение которое я написал, правильное (вроде).
5. borus - 19 Декабря, 2012 - 13:55:42 - перейти к сообщению
Вы же пишите
vlados пишет:
в случае ошибки возвращается NULL.

выходит не правильное регвыражение?
вот это сработало
'/\/\/\s\d{2,3}\s-->\s/is'
6. borus - 19 Декабря, 2012 - 15:17:48 - перейти к сообщению
пытаюсь шаблоном '/<tr.+?Конвертация данных.+?<\/tr>/' удалить строку таблицы.
что-то не получается. Прошу помощи
7. sKaa - 19 Декабря, 2012 - 15:29:43 - перейти к сообщению
borus, опишите нормально задачу.
8. borus - 19 Декабря, 2012 - 15:35:52 - перейти к сообщению
sKaa пишет:
borus, опишите нормально задачу.

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

пытаюсь поудалять строки из переменной $s, содержащей html код таблицы.
Типовой html-код строк таблицы, которые надо вырезать из переменной $s показан во вложении
9. LShark - 20 Декабря, 2012 - 11:38:53 - перейти к сообщению
почему .+?
может лучше .*?
10. borus - 21 Декабря, 2012 - 13:56:50 - перейти к сообщению
LShark пишет:
почему .+?
может лучше .*?

и так не работает Улыбка

 

Powered by ExBB FM 1.0 RC1