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]   

> Описание: Помогите разбить txt файл по макросам
Lenok
Отправлено: 09 Января, 2010 - 05:27:45
Post Id


Новичок


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


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




Есть макросы:

#title#Тайтл страницы#title#
#content#Начало контента<!--more--> продолжение контента#content#
#categories#Категория#categories#
#tags#Тэги#tags#


Как правильно можно распарсить текстовый файл к примеру на 100 000 символов согласно данной формы и чтобы разбитые текстовые файлы сохранялись в папку success с номерами file1.txt, file2.txt, file3.txt и т д ?
Я мог бы конечно и заказать чтобы написали скрипт, но очень хочется самому разобраться, пока знаний в php маловато.

Заранее признателен.

(Отредактировано автором: 11 Января, 2010 - 09:03:30)

 
 Top
Вездеход
Отправлено: 09 Января, 2010 - 12:11:19
Post Id



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


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


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




регулярные выражения думаю тут будут отлично. для каждой строки будет своя регулярка (хотя можно и соеденить), а уже полученные результаты сохраняйте.

но если каждая строка (тито, .контент, теги, категории) - это реально получается 1 строка только - то можно файл открыть построчно (file) потом его уже разбить через функцию explode или регулярку (чтобы убрать фразы типа #title#)


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Lenok
Отправлено: 09 Января, 2010 - 13:51:01
Post Id


Новичок


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


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




Проконсультируйте пожалуйста по шагам, вот первый шаг.
Сразу возникла проблема, так как из формы летит переменная $filecontent которая показывает путь к тхт файлу вставил такой код:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. $lines = file($filecontent);
  4.  
  5. foreach ($lines as $line_num => $line) {
  6.     echo htmlspecialchars($line) . "<br />\n";
  7.    
  8. }
  9.  
  10. ?>

Выдает ошибку "Invalid argument supplied for foreach()"
если пишешь $lines = file('file.txt'); то текст выодится. Что не правильно?
 
 Top
RomAndry Администратор
Отправлено: 09 Января, 2010 - 14:32:13
Post Id



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


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


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





что пишет?
 
My status
 Top
Lenok
Отправлено: 09 Января, 2010 - 14:40:51
Post Id


Новичок


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


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




Если чисто вставить
echo $filecontent;
то белый лист и все
 
 Top
SAD Модератор
Отправлено: 09 Января, 2010 - 14:42:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




ну значит у тебя в переменной ничего нет, ищи ошибку, когда заносишь в переменную данные
 
 Top
Lenok
Отправлено: 09 Января, 2010 - 18:08:23
Post Id


Новичок


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


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




в переменную $filecontent передается путь к файлу txt на локальном диске, может как то по другому это делается ?
 
 Top
SAD Модератор
Отправлено: 09 Января, 2010 - 18:13:28
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




ну а как ты делаешь?
 
 Top
Lenok
Отправлено: 10 Января, 2010 - 11:41:14
Post Id


Новичок


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


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




вначале кода присвоил if (isset($_POST['filecontent'])) {$filecontent = $_GET['filecontent'];}

только тогда начал текст выводиться.
 
 Top
SAD Модератор
Отправлено: 10 Января, 2010 - 12:08:30
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




зайдем с другой стороны, выложи код(или кусок кода) , в которым ты вводишь данные , которые передаешь через GET, и что ты в них передаешь?
 
 Top
Lenok
Отправлено: 10 Января, 2010 - 12:45:05
Post Id


Новичок


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


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




Извините малость не то показал так вот
if (isset($_POST['filecontent'])) {$filecontent = $_POST['filecontent'];} долго тупил и не понимал по началу почему белый лист Улыбка

Теперь код выглядит так:
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. if (isset($_POST['filecontent'])) {$filecontent = $_POST['filecontent'];}
  4. if (isset($_POST['title'])) {$title = $_POST['title'];}
  5. if (isset($_POST['break'])) {$break = $_POST['break'];}
  6. if (isset($_POST['break1'])) {$break1 = $_POST['break1'];}
  7. if (isset($_POST['linkscontent'])) {$linkscontent = $_POST['linkscontent'];}
  8. if (isset($_POST['more'])) {$more = $_POST['more'];}
  9. if (isset($_POST['categories'])) {$categories = $_POST['categories'];}
  10. if (isset($_POST['tags'])) {$tags = $_POST['tags'];}
  11.  
  12. if(isset($filecontent)){$lines = file($filecontent);}
  13.  
  14. else {echo "Укажите файл с текстом!";}
  15.  
  16. ?>


Следующий шаг разбить полученный файл согласно прилетевших переменных $break и $break1 , в форме это выглядит так: Разбить файлы от ? до ? символов к примеру от 1500 до 4000 символов и чтобы каждый раз он разбивал текст рандомно в этих промежутках, при условии что первые 400 символов он вставлял до макроса <--more-->
Как это правильно осуществить?

(Отредактировано автором: 10 Января, 2010 - 13:04:27)

 
 Top
SAD Модератор
Отправлено: 10 Января, 2010 - 13:17:23
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




посмотри ссылку может поможет http://www[dot]nulled[dot]ws/showthread.php?t=93565
(Добавление)
вбей в гугл-"разбить текст на части php" может , что найдешь
 
 Top
Вездеход
Отправлено: 10 Января, 2010 - 15:08:15
Post Id



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


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


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




Lenok
переменные лучше сперва создать пустыми хотябы, а потом уже присваивать значение.. мне кажется так понадежнее будет

Lenok пишет:
Следующий шаг разбить полученный файл согласно прилетевших переменных $break и $break1 , в форме это выглядит так: Разбить файлы от ? до ?

substr

Lenok пишет:
и чтобы каждый раз он разбивал текст рандомно в этих промежутках, при условии что первые 400 символов он вставлял до макроса <--more-->
Как это правильно осуществить?


не понял...


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Lenok
Отправлено: 11 Января, 2010 - 09:04:32
Post Id


Новичок


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


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




тему можно закрывать. скрипт заказал. очень мало знаний у меня в php ) спасибо за ответы.
 
 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