Ищем строку в файле PHP - PullRequest
1 голос
/ 16 мая 2011

Похоже, что этот цикл не находит строки, которые я хочу (на самом деле он вообще ничего не находит).

$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 ]

4 голосов
/ 16 мая 2011

Можно использовать 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);
0 голосов
/ 16 мая 2011
$start_string = " <!--".$id."-->";

У вас есть пробел перед <в этой строке.Я не знаю, должен ли он быть там, но это может легко привести к неожиданным результатам, если его нет во входном файле. </p>

0 голосов
/ 16 мая 2011

Просто выстрел в темноте, но входной файл может содержать символы конца строки (например, \n), которые могут отбросить сравнение при использовании ==. Попробуйте использовать такую ​​функцию, как strpos.

...