Php和javascript数组 - 跳过空白值并添加到新数组?

时间:2012-04-03 00:34:08

标签: php javascript regex arrays search

我在php中有一个数组,其中包含文本文件的所有行(每行是数组的一个值)。我的文本文件有空行,因此数组也有空行。我想在数组中搜索某个值,如下所示:

$array = array();

        $lines = file("textfile.txt"); //file in to an array
        foreach ($lines as $line)
        {
            if (stripos($line, "$$") !== false) 
            {
                $array[] = str_replace("$$", "", $line);

            }
        }

上面的代码正在搜索$$并将其替换为空白。文本文件包含一个带有$$或任何数字的行,我希望它能找到它正在执行的那一行的所有实例。

我的问题是我希望它在找到$$(数字)并将它们放入多维数组后找到接下来的5行非空白。多维数组看起来与此类似(如果您想知道为什么数组的命名方式,该程序是一个测试):

$test = array(
    array('question' => 'What is the answer', 'ansa' => "answera", 'ansb' => "answerb", 'ansc' => "answerc", 'ansd' => "answerd"), // $test[1]
    array('question' => 'What is the answer', 'ansa' => "answera", 'ansb' => "answerb", 'ansc' => "answerc", 'ansd' => "answerd"), // $test[2]
);

$$(数字)之后的下五行是一个问题和需要进入数组的四个答案。使用regxp和搜索的代码不起作用,所以我放弃了它。

2 个答案:

答案 0 :(得分:1)

你可以试试这样的......

<?php

$lines = array_filter(file('text.txt')); //file in to an array
$questions = array();

// find your starts and pull out questions
foreach ($lines as $k=>$line)
{
    if (stripos($line, "$$") !== false) 
    {
        $questions[] =  array_slice($lines, $k, 5);
    }
}


// dump
var_dump($questions);

请参阅php manual for array_slice

答案 1 :(得分:0)

你看过preg_replace_callback吗?

这些方面应该有效:

<?php

function replace_callback($matches) {
    var_dump($matches);
}

preg_replace_callback('/\$\$[0-9]+\s+([^'.PHP_EOL.']+){5}/is', 'replace_callback', file_get_contents('textfile.txt'));

?>