搜索文件的单词和删除行

时间:2014-08-13 19:09:23

标签: php

这是对同一主题的第二次请求。我不清楚 我需要删除该行。

我在这里搜索并找到了一个假设搜索的脚本的一部分 一个单词并删除该行。什么似乎有轻微的错误 我正在尝试做。

我在下拉列表中有一个选项列表。我想要它 删除所选的行。调用的文件choice.php 从下拉页面似乎是在php下面发布的 被调用因为没有拒绝访问或违规 错误。

这些是我在添加最后3行后得到的错误 被告知我需要。

fopen() expects at least 2 parameters, 1 given
implode(): Invalid arguments passed
fwrite() expects parameter 1 to be resource, boolean given
fclose() expects parameter 1 to be resource, boolean given

提前致谢

<?php
//  Separate choice.php has the following pull down 
//  Select item to delete from list
//  <option value="item1.php">Item 1</option>
//  <option value="item2.php">Item 2</option>
//  ...... many items.

$workitem = $_POST["itemtodelete"]; 

$file = file("option.list.php");
foreach( $file as $key=>$line ) {
    if( false !== strpos($line, $workitem) ) {
      unset ($file[$key]);
    }
}
// Removed "\n"
$file = implode("", $file);
// Told to add this.
$fp = fopen ("option.list.php");
fwrite($fp,implode("",$file);
fclose ($fp);

?>

2 个答案:

答案 0 :(得分:1)

fopen需要$mode作为第二个参数,因此失败以及需要$fp的所有内容。

只需使用file_put_contents即可。它甚至会implode数组:

$workitem = $_POST["itemtodelete"]; 

$file = file("option.list.php");
foreach( $file as $key=>$line ) {
    if( false !== strpos($line, $workitem) ) {
      unset ($file[$key]);
    }
}

file_put_contents('option.list.php', $file);

答案 1 :(得分:0)

确定。你缺少一些右括号,以及其他东西。

$replaceItem = $_POST['itemtodelete']; // You should filter this data

$newContents = "";
$path = PATH_TO_FILE; // This could be hard coded, but not recommended
$filename = "option.list.php";

// Check to see if the file exists
if ( file_exists($path."/".$filename) ) {
    // Wrap our IO stuff so we catch any exceptions
    try {
        // Open the file for reading
        $fp = fopen($path."/".$filename, "r");
        if ($fp) {
            // Loop line-by-line through the file
            while($line = fgets($fp, 4096) !== false) {

                // Only add the line if it doesn't contain $replaceItem
                // This is case insensitive. I.E. 'item' == 'ITEM'
                // For case sensitive, use strstr()
                if ( stristr($line, $replaceItem) == false ) {
                    $newContents .= $line;
                }
            }
        }
        // Close our file
        fclose($fp);

        // Replace the contents of the file with the new contents
        file_put_contents($path."/".$filename, $newContents);                
    } catch (Exception $e) {
        throw new Exception($e->getMessage());
    }
}

编辑:试试这个。我稍微修改了一下。