给出一个用PHP中的回车组织的文本文件生成HTML

时间:2010-07-08 00:38:27

标签: php html-generation

我希望能够用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 个答案:

答案 0 :(得分:2)

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 :(得分:1)

加载文件,然后使用正则表达式进行替换。

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

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

答案 2 :(得分:0)

创建一个函数,它接受这两个参数,加载行(可以通过file函数轻松完成),然后迭代它们,将它们附加到一个字符串,用你想要的HTML标记填充。

答案 3 :(得分:0)

这是另一种方式:

$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();

输出:

  • 加拿大
  • 阿尔巴尼亚
  • 阿尔及利亚
  • 安道尔
  • 安哥拉

答案 4 :(得分:0)

没有冒犯,但听起来你正试图重新发明the wheel。除非你发现一个有趣的编码操作,为什么不使用那里的emany模板系统呢? (提示:Smarty)这样可以让你的时间免于“更重要的事情”。