格式化PHP将数组爆炸成HTML

时间:2013-08-28 16:21:56

标签: php html explode strpos

我们有一位客户希望在其网站上输出影院列表。这个特殊的电影为我们提供了从中检索信息的链接。此链接仅以纯文本格式输出,元素由〜|〜

分隔

我正在使用explode和strpos将列表划分为div但是它仍然不足以满足我想要实现的目标。我无法理解我能做些什么才能正确格式化。这是我的代码:

<?php

$theArray = explode("~|~", file_get_contents("THE URL"));

echo "<ul id=\"cinemaListings\">";

foreach($theArray as $item){

    $findcinemaid = '~77';
    $findcinemaname = 'Cinema Name';
    $findx = 'X';
    $findu = 'U';
    $findgen = 'Gen';
    $findlink = '.ie';

    if(strpos($item, $findcinemaname) !== false){

        echo "<div class='cinemaName'>" . $item . "</div>";

    }elseif(strpos($item, $findgen) !== false){

        echo "<div class='cinemaGen'>" . $item . "</div>";

    }elseif(strpos($item, $findcinemaid) !== false){

        echo "<li>";

    }elseif($item == $findx){

        echo "<div class='cinemaX'>" . $item . "</div>";

    }elseif(strlen($item) == 8){

        echo "<div class='cinemaCode'>" . $item . "</div>";

    }elseif(strlen($item) == 3){

        echo "<div class='cinemaListId'>" . $item . "</div>";

    }elseif(strlen($item) == 2){

        echo "<div class='cinemaListId'>" . $item . "</div>";

    }elseif(strlen($item) == 1){

        echo "<div class='cinemaListId'>" . $item . "</div>";

    }elseif(DateTime::createFromFormat('H:i', $item) !== FALSE){;

        echo "<div class='cinemaTime'>" . $item . "</div>";

    }elseif(strpos($item, $findlink) !== false){

        echo "<div class='cinemaLink'>" . $item . "</div>";

    }elseif(DateTime::createFromFormat('d/m/Y', $item) !== FALSE){;

            echo "<div class='cinemaDate'>" . $item . "</div>";

    }else {

        echo "<div>" . $item . "</div>";

    }
}

echo "</ul>";

?>

然而这个脚本正在输出(当然,不包括div和类,只是不想添加它们):

<li>The Smurfs 2 2D   30/08/2013   11:10</li>
<li>The Smurfs 2 2D   30/08/2013   13:20</li>
<li>The Smurfs 2 2D   31/08/2013   11:10</li>
<li>The Smurfs 2 2D   31/08/2013   13:20</li>
<li>Elysium   04/09/2013   15:45</li>
<li>Elysium   04/09/2013   21:00</li>
<li>Elysium   05/09/2013   15:45</li>

有没有可能的格式化方法如下:

<li>
The Smurfs 2 2D
30/08/2013 (today's date)
11:10   13:20
</li>

<li>
Elysium
04/09/2013 (today's date)
15:45   21:00
</li>

所以只有一个电影名称,今天的日期和当天的时间(有课程类别)。然后到下一部电影......等等。

我被困住了,不胜感激任何帮助!提前谢谢。

1 个答案:

答案 0 :(得分:0)

您是在谈论源布局还是前端html布局?如果它是源布局,您是否尝试替换它:

echo "<div class='cinemaName'>" . $item . "</div>";

用这个(?):

echo "<div class='cinemaName'>" . preg_replace( '   ', "\r\n", $item ) . "</div>";

由于$item的每个段之间看起来有3个空格,因此您可以使用返回速记\r\n(或某些系统仅\n)替换它们。

如果是前端布局,只需使用相同的方法,而不是\r\n,而是将其更改为<br/>