在PHP中使用逗号分隔值创建UL

时间:2010-08-03 02:20:11

标签: php

我正在创建用户输入,我希望他们列出链接和说明。

从头开始这样做,所以我对sytax的建议持开放态度。我在考虑这样的事情:

www.ebay.com | "my Ebay" , http://www.craigslist.org?s=bla | "Craiglist" ,
www.twitter.com/ev | "My Twitter"

我想用php将其转换为UL。我想我会为每个人使用一个但是想知道最好的方法是什么。

所以目标:

  1. 抓取网址,如果附加HTTP,请将其关闭
  2. 抓取描述
  3. 创建链接,类似于此

    <a href="http://<?php echo $link; ?>"><?php echo $desc; ?></a></li>
    

1 个答案:

答案 0 :(得分:3)

$data = explode(",", $string);
$list = "<ul>";
foreach ($data as $item) {
    list($website, $title) = explode("|", $item);

    // Clean up the extra white spaces, if any.
    $website = trim($website);
    $title = trim($title);

    // make lowercase for the below check
    $website = strtolower($website); 

    // if website does not have http:// append it
    $website = (strpos($website, "http://") !== 0)?"http://" . $website:$website;

    $title = str_replace('"', "", $title); // optional, but incase you do not want the quotes. 
    //If you do want them, then I would suggest htmlspecialchars so it does not mess up the title attribute below.
    $list .= '<li><a href="' . $website . '" title="' . $title . '">' . $title . '</a></li>';
}

$list .= '</ul>';
echo $list;

应该让你到达你想去的地方。

<强>更新 注意引用注释,它会打破html。解决方案,删除str_replace中显示的引号,或使用htmlspecialchars()将它们替换为html计数器部分。

<强>更新

在第一个位置的网址中添加了对http://的检查,如果不存在则会附加。我用strpos()做了一个简单的检查。

还添加了修剪并删除了周围的空格,以及|字符。