Php 拆分并回显到列表中

Php 拆分并回显到列表中,php,perl,list,split,arraylist,Php,Perl,List,Split,Arraylist,我有一个充满地址的sql表,就像这样 Hattie:07903 000066::Dad:07854 000095::Tom:07903 000044::Allistair:07765 000005::Home:0115 974 0000:: 我想分割每个联系人,这样每个联系人的姓名和号码都会在下面的列表框中显示在一个单独的面板中 <ol> <li>Hattie:07903 000066</li> <li>Dad:07854 000095</

我有一个充满地址的sql表,就像这样

Hattie:07903 000066::Dad:07854 000095::Tom:07903 000044::Allistair:07765 000005::Home:0115 974 0000::
我想分割每个联系人,这样每个联系人的姓名和号码都会在下面的列表框中显示在一个单独的面板中

<ol>
<li>Hattie:07903 000066</li>
<li>Dad:07854 000095</li>
</ol> 

  • 海蒂:07903 000066
  • 爸爸:07854000095
  • 任何帮助都会很好

    谢谢


    您可以像这样拆分字符串:

    $adresses = explode("::", $yourString)
    

    然后,一个简单的foreach将按照您的意愿打印内容。

    最好重新构造数据库,这样地址就不会存储为分隔字符串,而是将每个地址作为地址表中的一行来存储。。。最好将姓名和地址作为单独的列。。。使搜索和数据操作(添加新地址等)变得更加困难

    $addresses=explode(“::”,$addressField);
    回声';
    foreach($地址作为$地址){
    回显“
  • ”,$address“
  • ”; } 回声';
    编辑

    (无耻地从大奖赛的答案中窃取格式)

    $addresses=explode(“::”,$addressField);
    回声';
    foreach($地址作为$地址){
    列表($name,$phone)=分解(“:”,$address);
    回显“
  • 名称:”、$Name、“电话:”、$phone“
  • ”; } 回声';
    Perl中没有汗水:

    #! /usr/bin/perl
    
    local $_ = "Hattie:07903 000066::Dad:07854 000095::Tom:07903 000044::Allistair:07765 000005::Home:0115 974 0000::";
    
    print "<ol>\n",
          map("<li>$_</li>\n", split /::/),
          "</ol>\n";
    
    无论哪种方式,输出都是

    <ol> <li>Hattie:07903 000066</li> <li>Dad:07854 000095</li> <li>Tom:07903 000044</li> <li>Allistair:07765 000005</li> <li>Home:0115 974 0000</li> </ol>
  • 海蒂:07903 000066
  • 爸爸:07854000095
  • 汤姆:0790300044
  • 电话:0776500005
  • 住址:0115974 0000

  • 啊,我觉得自己像个傻瓜,抱歉,这是一个很难回答的问题。你可以在@Mark Baker solution中看到完整的代码。但是,在复制/粘贴代码之前,最好先理解它。@Colin-请记住,split()从5.3开始就不推荐使用了。0@Mark贝克,你说得对,我有点过时了。我会纠正的。@Colin-这是我升级PHP版本时在自己的代码中经常忘记的事情。如果您从其他响应中提升代码,您至少可以给它一个积分-+1它。@Dummy00001-提升输出格式,而不是提升代码。。。还有人抱怨我已经提高了投票率,所以我不能再这么做了。代码复杂,很难区分格式和实际代码;)@Dummy-承认它非常简单,Perl和PHP之间的相似之处非常显著,非常简单。。。我仍在努力弄清楚为什么这么做似乎没有正确地登记我的投票。。。我看不到我对大奖赛答案的反对票,但它不会让我再次投票,因为它说我已经投票了
    #! /usr/bin/perl
    
    local $_ = "Hattie:07903 000066::Dad:07854 000095::Tom:07903 000044::Allistair:07765 000005::Home:0115 974 0000::";
    
    print "<ol>\n",
          map("<li>$_</li>\n", split /::/),
          "</ol>\n";
    
    print "<ol>\n",
          map("<li>$_</li>\n", /(.+?)::/g),
          "</ol>\n";
    
    <ol> <li>Hattie:07903 000066</li> <li>Dad:07854 000095</li> <li>Tom:07903 000044</li> <li>Allistair:07765 000005</li> <li>Home:0115 974 0000</li> </ol>