PHP.SU

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

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

> Найдено сообщений: 18
Torres90 Отправлено: 17 Мая, 2018 - 20:25:01 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
но опять же надо разбираться, год назад с ним делал парсер, было классно, но информацию в файл я не записывал тогда...

чего там разбираться, при записи вместо
пишешь

при чтении вместо
пишешь


Заменил, вот файл... Он выдает туже ошибку. Я считаю, что в строке:
PHP:
скопировать код в буфер обмена
  1. <?PHP  foreach($rec as $item) :?>

выдает ошибку исключительно потому, что переменная $rec не может получить данные, а не может потому что переменной $result ничего не присвоили или я не прав здесь?
Ошибка та же:
PHP:
скопировать код в буфер обмена
  1. Parse error: syntax error, unexpected T_VARIABLE in /var/www/.../football.php on line 38

Файл:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $db_txt = 'football.txt';
  3. $dir = 'db';
  4. is_dir($dir) ?: mkdir($dir);
  5.  
  6. $fp = fopen($dir . DIRECTORY_SEPARATOR . $db_txt, 'r');
  7. $rec = fread($fp, json_decode($result));
  8. fclose($fp);
  9. ?>
  10. <table class="table table-bordered table-responsive table-hover">
  11.  
  12.     <thead class="table-active">
  13.  
  14.         <tr class="col-lg-12">
  15.  
  16.             <th scope="col">Дата</th>
  17.  
  18.             <th scope="col">Чемпионат</th>
  19.  
  20.             <th scope="col">Матч</th>
  21.  
  22.             <th scope="col">П1</th>
  23.  
  24.             <th scope="col">Х</th>
  25.  
  26.             <th scope="col">П2</th>
  27.  
  28.             <th scope="col">Прогноз</th>
  29.  
  30.             <th scope="col">Код</th>
  31.  
  32.         </tr>
  33.  
  34.     </thead>
  35.  
  36.     <tbody>
  37.  
  38.         <?PHP  foreach($rec as $item) :?>
  39.  
  40.             <tr>
  41.  
  42.                 <td><?= $item[0] ?></td>
  43.  
  44.  
  45.  
  46.                 <td><?= $item[1] ?></td>
  47.  
  48.  
  49.  
  50.                 <td><?= $item[2] ?></td>
  51.  
  52.  
  53.  
  54.                 <td><?= $item[3] ?></td>
  55.  
  56.  
  57.  
  58.                 <td><?= $item[4] ?></td>
  59.  
  60.  
  61.  
  62.                 <td><?= $item[5] ?></td>
  63.  
  64.  
  65.  
  66.                 <td><?= $item[6] ?></td>
  67.  
  68.  
  69.  
  70.                 <td><?= $item[7] ?></td>
  71.  
  72.             </tr>
  73.  
  74.  <?PHP  endforeach ?>
  75.  
  76.     </tbody>
  77.  
  78. </table>
Torres90 Отправлено: 16 Мая, 2018 - 20:11:59 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
у тебя в сериализованной строке ошибка. Там одинарные кавычки встречаются, и они неэкранированые. Я бы использовал JSON_ENCODE и JSON_DECODE. А почему стирается. это я не знаю, откуда там вообще что берется, отсюда не видно.

Как сделать экранирование, чтобы при выгрузке слэш убирался? Информация получается парсером, в парсере я могу прописать, чтобы перед одинарной кавычкой ставился слэш, а вот с извлечением сложнее...
Json вариант тоже интересный, но опять же надо разбираться, год назад с ним делал парсер, было классно, но информацию в файл я не записывал тогда...
Torres90 Отправлено: 14 Мая, 2018 - 18:05:01 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
в /db/football.txt что находится? выложи файл

Не вижу где добавить файл, заливаю текст так сюда... И как ни странно сейчас захожу и файл этот текстовый был почему-то пустой, как он сам по себе мог очиститься? Где-то у меня такая функция прописана?
Спойлер (Отобразить)
Torres90 Отправлено: 14 Мая, 2018 - 15:57:47 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
ну вот и ищи там. то, что указывает на эту строку, в php не значит, что в этой строке ошибка. Это значит, что интерпретатор на этой строке спотыкается, а ошибка где угодно может быть выше. Точки с запятой где-нибудь в конце строки не стоит или еще что.

Все уже удалил... Ошибка таже в 38 строке, строка получается таже... Запись в файл работает, по крайней мере массив я видел в файле txt.
Спойлер (Отобразить)
Torres90 Отправлено: 14 Мая, 2018 - 15:43:07 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
Torres90 пишет:
Parse error: syntax error, unexpected T_VARIABLE in /var/www/........php on line 141
Тут всего 65 строк, откуда там 141 строка?

Там много строк закоментировано до этого...
Torres90 Отправлено: 14 Мая, 2018 - 15:24:23 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
Пока без перемен... Может причина в том, что файл записи и файл чтения не в одном файле, а разнесены?
Спойлер (Отобразить)
Torres90 Отправлено: 14 Мая, 2018 - 14:11:28 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
Torres90 пишет:
Заменить заменил, но от синтаксической ошибки в строке не избавился
А что, есть еще и ошибка? А мы тут все типа, кашпировские?

В этой строке и есть ошибка, причём синтаксическая...
Torres90 Отправлено: 14 Мая, 2018 - 10:20:18 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
teleoperator27 пишет:
наверно не

а

а $result это то, что в файле в сериализованом виде записано
Заменить заменил, но от синтаксической ошибки в строке не избавился
Спойлер (Отобразить)
Torres90 Отправлено: 14 Мая, 2018 - 09:59:56 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
Строитель
Сделал файл вывода таким образом, но есть сомнения, ведь в текущем файле нет указания переменной $result. Получается она вообще здесь лишняя.
Спойлер (Отобразить)
Torres90 Отправлено: 24 Апреля, 2018 - 00:00:11 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
Строитель, вставил код из примера все заработало, причина как я понял у меня в пути была. Изменил путь в своем, тоже заработало... Однако не понимаю почему прямой путь не заработал... Видимо прописывается не ссылкой как у меня.
Torres90 Отправлено: 23 Апреля, 2018 - 09:53:46 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
Строитель
PHP:
скопировать код в буфер обмена
  1. $fp = fopen("/parser/db.txt", "w+"); // Открываем файл в режиме записи 
  2. $rec_arr = serialize($result);
  3. $rec = fwrite($fp, $rec_arr); // Запись в файл
  4. if ($rec) echo 'Данные в файл успешно занесены.';
  5. else echo 'Ошибка при записи в файл.';
  6. fclose($fp); //Закрытие файла

Пока результат тот же... Права на текстовый файл 777. Путь до файла прямой прописан. Читать его буду в отдельном файле, этот будет исключительно автоматически обновлять информацию с полной перезаписью файла.
Torres90 Отправлено: 23 Апреля, 2018 - 09:15:47 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
В конец файла парсера вставил такой код:
PHP:
скопировать код в буфер обмена
  1. $fp = fopen("/parser/db.txt", "w+"); // Открываем файл в режиме записи 
  2. $rec = fwrite($fp, $result); // Запись в файл
  3. if ($rec) echo 'Данные в файл успешно занесены.';
  4. else echo 'Ошибка при записи в файл.';
  5. fclose($fp); //Закрытие файла

Естественно записи не происходит, что может быть тут не так. Файл перезаписываться должен при каждом запросе.
Torres90 Отправлено: 21 Апреля, 2018 - 11:09:40 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
Строитель, спасибо! Все отлично работает, особенно порадовал вывод столбцов в нужных местах! Вчера не получалось видимо из-за того, что правки все делал с телефона.

А есть какой-то способ при парсинге дамп этот записать в файл, чтоб брать данные со своего сервера или это лучше делать с MySQL? Хотелось бы максимально ускорить процесс получения данных, а обновление информации в файле возможно через крон настроить.
Torres90 Отправлено: 20 Апреля, 2018 - 13:55:12 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
К сожалению у меня не работает вывод. Связано ли это с тем, что информация в массив получается в этом же файле через file_get_contents или может слишком большой размер массива?
Имею ввиду, что из таблицы получаю массив в этом файле, а его сразу же извлекаем?
Torres90 Отправлено: 20 Апреля, 2018 - 12:33:05 • Тема: Работа парсера с таблицами и массивами • Форум: Напишите за меня, пожалуйста

Ответов: 32
Просмотров: 927
Строитель пишет:
Пустые элементы можно отфильтровать с помощью array_filter(), а сбросить ключи - с помощью array_values().

А если мне не нужно удалять пустые? В таблице могут быть изначально пустые поля, при парсере они тоже должны писаться в базу и заполняться также пустыми... Сейчас конкретно этого дампа, что я прислал надо просто вырезать первые 2 элемента в каждом подмассиве.

Строитель пишет:
Совет на будущее - для того, чтобы удобнее было с вашим дампом работать кому-то другому, публикуйте его с помощью var_export()

Я до сих пор не понял, что отменя требовалось при добавлении дампа...

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB