在PHP文件中寻找一行

时间:2011-05-16 17:06:16

标签: php loops file-io

这个循环似乎没有找到我想要的行(它实际上根本找不到任何东西)。

$file_lines = file("rss.xml");
$max_lines = count($file_lines);
$id = $_POST['id_number'];
$start_string = " <!--".$id."-->";
$start_line;
$end_string = "<!--end of item ".$id."-->";
$end_line;

for ($i = 0; $i < $max_lines; $i++) {
        $temp_line = $file_lines[$i];
        if ($temp_line == $start_string) {
                $start_line = $i;
                echo "found start";
        }

        if ($temp_line == $end_string) {
                $end_line = $i;
                echo "found end";
        }
}

它应该逐行浏览文件并查看它是否与预设字符串匹配。如果是,则应该将变量设置为行的位置(计数器$ i)。

3 个答案:

答案 0 :(得分:4)

一个选项是使用array_search:

$index = array_search($start_string, $file_lines);

$index将是您找到的元素的关键字,如果有的话。

您可以通过检查错误来检查是否有结果:

if($index !== FALSE) {
    // We have a result, act accordingly. You can get the matched line:
    echo "Line found: " . $file_lines[$index];
}

如下所述,文件不会修剪行结尾。您可以使用FILE_IGNORE_NEW_LINES标记跳过此内容:

$lines = file("rss.xml", FILE_IGNORE_NEW_LINES);

答案 1 :(得分:0)

只是在黑暗中拍摄,但输入文件可能包含行尾字符(例如\n),这可能会导致您使用==进行比较。尝试使用strpos等功能。

答案 2 :(得分:0)

$start_string = " <!--".$id."-->";

你在&lt;之前有一个空格。在那条线上。我不知道是否应该存在,但如果它不在输入文件中,很容易导致意外结果。