0

我希望能够在 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
4

5 回答 5

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;
于 2010-07-08T07:51:42.320 回答
1

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

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

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

于 2010-07-08T00:55:06.340 回答
0

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

于 2010-07-08T00:48:23.880 回答
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();

输出:

  • 加拿大
  • 阿尔巴尼亚
  • 阿尔及利亚
  • 安道尔
  • 安哥拉
于 2010-08-15T01:07:21.240 回答
0

没有冒犯,但听起来你正在尝试重新发明轮子。除非你发现一个有趣的编码练习,否则为什么不使用许多模板系统呢?(提示:Smarty)这会让你有空闲时间去做“更重要的事情”。

于 2010-08-15T02:52:21.993 回答