Генерировать HTML, учитывая текстовый файл, организованный с возвратом каретки в PHP - PullRequest
0 голосов
/ 08 июля 2010

Я хотел бы иметь возможность получить файл в PHP

**example_file.txt**
United States
Canada
-----------------------
Albania
Algeria
American Samoa
Andorra
Angola

и обернуть эти отдельные разрывы строк в элемент HTML, который я передаю.

Пример:

magicHtmlGenerator(example_file.txt, '<li>') 
// spits out <li>United States</li><li>Canada</li> etc

Ответы [ 5 ]

2 голосов
/ 08 июля 2010
function magicHtmlGenerator($filename, $wrapper) {
    $x = file_get_contents($filename);
    return '<'.$wrapper.'>'.str_replace("\n",'</'.$wrapper.'><'.$wrapper.'>',$x).'</'.$wrapper.'>';
}

$html = magicHtmlGenerator('example_file.txt','li');
echo $html;
1 голос
/ 08 июля 2010

Загрузите файл и затем используйте регулярное выражение для замены.

preg_replace  ( \\r+([^\r]+)\r+\g  , \<li>$1</li>  ,  $str );

http://php.net/manual/en/function.preg-replace.php

0 голосов
/ 15 августа 2010

Без обид, но похоже, что вы пытаетесь изобрести колесо . Если вы не находите это интересным упражнением в кодировании, почему бы не использовать там множество шаблонных систем? (подсказка: Smarty) Это оставило бы ваше время свободным для "более важных вещей".

0 голосов
/ 15 августа 2010

Вот еще один способ:

$sxml = new SimpleXMLElement('<ul></ul>', LIBXML_NOXMLDECL);
$data = file('example_file.txt', FILE_IGNORE_NEW_LINES);
foreach ($data as $line) {
    if (ctype_alpha($line)) {   // Or whatever test you need
        $sxml->addChild('li', $line);
    }
}
echo $sxml->asXML();

Вывод:

  • Канада
  • Албания
  • Алжир
  • Андорра
  • Ангола
0 голосов
/ 08 июля 2010

Создайте функцию, которая принимает эти два аргумента, загружает строки (это можно легко сделать с помощью функции file ), затем перебирайте их, добавляя их в строку, дополненную нужным тегом HTML.

...