我在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和搜索的代码不起作用,所以我放弃了它。
答案 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);
答案 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'));
?>