如何逐行读入插入具有特殊条件的数组?

时间:2015-03-05 17:05:41

标签: php arrays string

<b title="FunctionalCI">ApplicationSolution</b>::42<br/>
<ul class="treeview">
<li>Name = Sep11</li>
<li>Description = <div ></div></li>
<li>Organization = <a href="http://localhost/itop/web/pages/UI.php?operation=details&class=Organization&id=4&c[menu]=ConfigManagementOverview" title="Organization::4">test</a></li>
<li>Organization name =test</li>
<li>Business criticity = <span title="high">high</span></li>
<li>Move to production date = 2014-12-31</li>
<li>Contacts = </li>
<li>CIs = <a href="http://localhost/itop/web/pages/UI.php?operation=details&class=FunctionalCI&id=49&c[menu]=ConfigManagementOverview" title="Functional CI::49">Sep Console04</a>, 42 49, Sep11, Sep Console04<br/><a href="http://localhost/itop/web/pages/UI.php?operation=details&class=FunctionalCI&id=50&c[menu]=ConfigManagementOverview" title="Functional CI::50">Sep Console05</a>, 42 50, Sep11, Sep Console05<br/><a href="http://localhost/itop/web/pages/UI.php?operation=details&class=FunctionalCI&id=53&c[menu]=ConfigManagementOverview" title="Functional CI::53">Sep Engine CO04</a>, 42 53, Sep11, Sep Engine CO04</li>
<li>Business processes = <a href="http://localhost/itop/web/pages/UI.php?operation=details&class=BusinessProcess&id=44&c[menu]=ConfigManagementOverview" title="Business Process::44">Business Process</a>, 44 42, Business Process, Sep11</li>
<li>CI Type = Application Solution</li>
<li>Friendly name = Sep11</li>
</ul>
<b title="FunctionalCI">WebApplication</b>::49<br/>
<ul class="treeview">
<li>Name = Sep Console04</li>
<li>Organization = <a href="http://localhost/itop/web/pages/UI.php?operation=details&class=Organization&id=4&c[menu]=ConfigManagementOverview" title="Organization::4">test</a></li>
<li>Organization name = test</li>
<li>Business criticity = <span title="low">low</span></li>
<li>Move to production date = 2014-12-26</li>
<li>Contacts = </li>
<li>Application solutions = <a href="http://localhost/itop/web/pages/UI.php?operation=details&class=ApplicationSolution&id=42&c[menu]=ConfigManagementOverview" title="Application Solution::42">Sep11</a>, 42 49, Sep11, Sep Console04</li>
<li>CI Type = Web Application</li>
<li>Friendly name = Sep Console04</li>
</ul>

大家好,我是php编程的新手。正如你所看到的,我有test.txt文件。我想在php中逐行读取test.txt文件,然后将每一行保存在二维数组中(如data [i] [j])。行索引我应该更改only when $line =="</ul>"

我编写了如下代码来阅读test.txt文件:

$file = fopen("result.xml", "r");
if ($file)
{
while (!feof($file))
        {
            $line = fgets($file);
.....
}
}

我对如何控制row index i when "$line == "</ul>" 感到困惑  我非常感谢您的帮助! 非常感谢!

安华

1 个答案:

答案 0 :(得分:1)

在此之前(!feof($ file)),您需要定义$ data数组和$ i。

$data = array();
$i=0;
$data[$i] = array();

这一切都可以在一行中完成,但在这里分成三个以便更有意义。

现在,在您阅读该行后,您会看到它是否为&lt; / ul&gt;。我会修剪它 - 以防它有空白。如果是&lt; / ul&gt;,则递增$ i并创建一个新数组。

if(trim($line) == '</ul>')
{
    $i++;
    $data[$i] = array();
}

同样,这可以是一个单行,但为了清楚起见,它在这里分开。

现在您知道$ i,因此在$ data [$ i] ...

中添加一个新行
$data[$i][] = $line;

最后,你可以print_r($ data)来查看它是否是你想要的。