2014-09-12 2 views
0

Я хочу, чтобы переформатировать текстовый файл из этого:переформатировать текстовый файл в PHP

• Name - 5 September 12:19 
- Message 

Для этого:

Name (5 September, 12:19) 
Message 

Где имена находятся в жирного текста, и это может быть каким-то показания, которые поступают вперед в сообщениях (-- -- -- --). Эти показания заменяются <hr>. Вы можете увидеть весь текстовый файл here.

я придумал this:

$url = 'http://erik-edgren.nu/files/history/apg29/jesus-september-2014.txt'; 
$lines = file($url, FILE_IGNORE_NEW_LINES); 

foreach($lines AS $line) { 
    $info = explode(' - ', $line); 

    if(strlen($info[0]) > '• ') { 
     echo '<b>'.str_replace('• ', '', $info[0]).'</b>'; 
    } 

    echo !isset($info[1]) ? '' : ' ('.$info[1].')'; 
    echo '<br>'; 
} 

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

+0

Это работает? Вы просто пытаетесь протолкнуть процесс? – EricSSH

+0

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

+0

@EricSSH: Код, который я предоставил, работает, как вы можете видеть на веб-странице, с которой я связан. Да. Я хочу получить весь файл TXT и переформатировать контент, чтобы показать его на веб-сайте. – Erik

ответ

0

Это основная идея того, что я буду делать. Вероятно, вам нужно заменить '•' на unicode для этого символа. Этот скрипт, вероятно, не работает, но у него есть общее представление о том, что я буду делать.

<?php 
$url = 'http://erik-edgren.nu/files/history/apg29/jesus-september-2014.txt'; 
$thedata=file_get_contents($url); 
$lines=explode(PHP_EOL,$thedata); 

$line1=''; 
foreach($lines as $a) 
{ 

    if(substr($a,2,2)=='• ') 
    { 
      $data=explode(' ',$a); 
      $line1=$data[1] . ' (' . $data[3] . ' ' . $data[4] . ', ' . $data[5] . ')'.PHP_EOL; 
    } 
    if(substr($a,2,2)=='- ') 
    { 
    echo $line1 . substr($a,2) . PHP_EOL; 
    } 
} 


?> 
+0

замените PHP_EOL
, если вы показываете текст на странице. – Dimitri

+0

Спасибо, но я не могу заставить его работать независимо от того, насколько сильно я пытаюсь исправить эту проблему:/Я тестировал версию unicode, но ничего не изменил. – Erik

Смежные вопросы