Jump to content
  • 0

Вывод содержимого .txt на страницу


terri
 Share

Question

Доброго времени суток! Помогите новичку с выводом содержимого на страницу сайта. В общем, у меня есть документ .txt, в котором лежат записи вида:

Имя|email@mail.ru|Текст сообщения.

Как вывести это дело на страницу я разобрался:


<?php echo file_get_contents('myfile.txt') ?>

Но возникло 2 проблемы:

1) В файле каждое сообщение пишется с новой строки, однако на странице всё выводится в 1 сплошную строку. Получается так: Имя|email@mail.ru|Текст сообщения. Имя2|email2@mail.ru|Текст сообщения2. и т.д.

2) В файле разделителем служит "|" можно ли как то это использовать и сделать что бы выводило текст так:

Имя (email)

Текст сообщения.

Надеюсь на вашу помощь! :blush:

Link to comment
Share on other sites

Recommended Posts

  • 0

Я так понял, что надо, чтобы было так:

  Quote
name (email)

text

name2 (email2)

text2

вот, пожалуйста


<?= preg_replace('/^(.*)\|(.*)\|(.*)$/m', '\\1 (\\2)<br>\\3<br>', file_get_contents('test.txt')); ?>

  On 10/25/2013 at 7:07 PM, Bassline said:
Или так

Имя (email@mail.ru)

Текст сообщения

для каждого сообщения.

Да пожалуйста

<?= preg_replace('/^(.*)\|(.*)\|(.*)$/m', '
\\1 (\\2)
\\3', file_get_contents('test.txt')); ?>

  • Like 2
Link to comment
Share on other sites

  • 0

Veseloff

Вы хорошо разбираетесь в php! Может подскажите как убрать id из ссылок типа page.php?id=22, точнее не убрать, а что бы в браузере не отображалось. Пробовал как-то через .htaccess сделать, но не совсем то получилось.

Link to comment
Share on other sites

  • 0
  On 10/25/2013 at 7:43 PM, Bassline said:

Не получится, движок самописный и самописный не мной, я в php кроме <?php include(" "); ?> больше ничего не знаю.

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

P. S. И, пожалуйста, не надо в этой теме обсуждать проблемы, которые не касаются этой самой темы.

Link to comment
Share on other sites

  • 0
  On 10/25/2013 at 7:51 PM, Veseloff said:
  On 10/25/2013 at 7:43 PM, Bassline said:

Не получится, движок самописный и самописный не мной, я в php кроме <?php include(" "); ?> больше ничего не знаю.

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

То есть через .htaccess никак нельзя сделать?

Link to comment
Share on other sites

  • 0
  On 10/25/2013 at 7:09 PM, Veseloff said:

Я так понял, что надо, чтобы было так:

  Quote
name (email)

text

name2 (email2)

text2

вот, пожалуйста


<?= preg_replace('/^(.*)\|(.*)\|(.*)$/m', '\\1 (\\2)<br>\\3<br>', file_get_contents('test.txt')); ?>

  On 10/25/2013 at 7:07 PM, Bassline said:
Или так

Имя (email@mail.ru)

Текст сообщения

для каждого сообщения.

Да пожалуйста

<?= preg_replace('/^(.*)\|(.*)\|(.*)$/m', '
\\1 (\\2)
\\3', file_get_contents('test.txt')); ?>

Спасибо огромное! А можно сделать так, что бы email был в имени? Т.е. при нажатии на имя происходила команда "mailto" и между сообщениями был отступ в 2 строки?

Edited by terri
Link to comment
Share on other sites

  • 0

Всё, разобрался :yahoo: Всем огромное спасибо!

Может кому в будущем пригодится... Вышло так:


<?= preg_replace('/^(.*)\|(.*)\|(.*)\|(.*)$/m', '<p><a href="mailto:\\2"><b>\\1</b></a> <br>\\3 <br>\\4</p><HR>', file_get_contents('test.txt')); ?>

Показывает так:

Имя

Текст сообщения.

Дата


Правда как сделать отступ от каждого сообщения на 2 строки я так и не разобрался=\

P.S. Ребята, а как в поля "имя", "email", "текст сообщения" запретить ввод символа "|", который считается делитмером?

Edited by terri
Link to comment
Share on other sites

  • 0

На самом деле я совершил медвежью услугу, написав код. Я думаю, что всё-таки лучше самому разобраться будет. Дам пару ссылок для того, чтобы немного подсказать

http://us1.php.net/manual/ru/function.strpos.php

http://us1.php.net/manual/ru/function.preg-match.php

http://us1.php.net/manual/ru/function.preg-replace.php

http://phpclub.ru/detail/article/regexp_1

http://phpclub.ru/detail/article/regexp_2

Link to comment
Share on other sites

  • 0

rus, ну не думаю я что в этом текстовом файлике будет всего одна строчка. ТС его как базу данных будет использовать.

И логично предположить, что ещё и по "\n" разбивать придётся... можно и не циклом..

Но всё равно, с регуляркой больше понравилось - удобно

Edited by Николя223
Link to comment
Share on other sites

  • 0

Николя223, выше я привел пример цикла форич, эксплоуд будет бить по разделителю и загонять массив в переменную, а перевод каретки тут абсолютно не сыграет роль.

просто нафига париться с регулярками, когда есть способ проще? да и работает побыстрее...

Link to comment
Share on other sites

  • 0

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


$strings = file('myfile.txt');
foreach($strings as $string)
{
$data = explode('|', $string);
echo "...";
}

  • Like 1
Link to comment
Share on other sites

  • 0
  On 10/27/2013 at 8:04 AM, rus said:

Николя223 - почему двумя циклами?

Veseloff - а разве трудно скобки и ссылку поставить?


echo '<p><a href="mailto:'.$val[1].'">'.$val[0].'</a></p>
<p>'.$val[2].'</p>';

Не вижу смысла по этим пустякам спорить :) Но я не соглашусь)))

Допустим пример : Имя|email@mail.ru|Текст сообщения. Имя2|email2@mail.ru|Текст сообщения2

Тут у него точка с пробелом разделитель)) для удобства:

Имя|email@mail.ru|Текст сообщения

Имя2|email2@mail.ru|Текст сообщения2

...

Если просто через p всё вываливать без разбору, тогда да. Ну а если формировать нужно, тогда так:


$strings = file('myfile.txt');
$rows = explode('\n', $strings);
foreach($rows as $row)
{
$parts = explode('\n', $row);
//тем самым разбиваем все значения по строкам(либо даже можно по строкам документ считывать)
// Далее либо опять циклом - если делителей много либо формирование готовой строки

echo "...";
}


возможно сказываются мои предубеждения - не люблю лишний раз разбивать на массивы, если можно просто заменить))

по возможности часто replace и ему подобные функции использую

Edited by Николя223
Link to comment
Share on other sites

  • 0

Если почитать в документации что делает функция file, то станет понятно почему я её применил, почему не нужно делать

$rows = explode('\n', $strings);

и почему ваш код будет нерабочий.

Link to comment
Share on other sites

  • 0
  On 10/28/2013 at 8:36 AM, Veseloff said:
и почему ваш код будет нерабочий.

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

Edited by Николя223
Link to comment
Share on other sites

  • 0

Да и не надо спорить просто нужно быть внимательней, куда торопиться ? нужно людей направлять в правильном направлении, а не показывать свои знания(тем более это не блиц викторина).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy