这个循环似乎没有找到我想要的行(它实际上根本找不到任何东西)。
$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)。
答案 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;之前有一个空格。在那条线上。我不知道是否应该存在,但如果它不在输入文件中,很容易导致意外结果。