0
    $file = file($dir);
    $string = 'mystring';
    foreach($file as $key=>$value) {
        if(!strcmp($value, $string)) {
           unset($file[$key]);
        }
    }

为什么只取消设置最后一个字符串以及如何修复它?

4

3 回答 3

0

与前两个一起,忽略两端的空格,这可能是您正在寻找的更多内容:

if(trim($value) !== $string) {
于 2013-10-15T17:12:35.230 回答
0

从手册

注意:结果数组中的每一行都将包含行尾,除非使用 FILE_IGNORE_NEW_LINES,因此如果您不希望出现行尾,您仍然需要使用 rtrim()。

所以,要么:

$file = file($dir,FILE_IGNORE_NEW_LINES);

或者:

if(!strcmp(rtrim($value), $string)) {

可能会起作用(假设尾随的换行符确实是它们直到最后一行才匹配的原因)。

于 2013-10-15T16:56:08.557 回答
0

有点不清楚你想要实现什么。strcmp 只比较两个字符串并返回第一个字符串是否大于第二个字符串。

一旦您在文件中选择了要删除的行,取消设置就是要走的路

于 2013-10-15T16:56:59.313 回答