如何在当前行中查找和替换(来自fgets())? Php

问题描述 投票:0回答:1

我正在尝试使用PHP更改.js文件。我可以使用fgets()逐行获取文件的内容,但无法替换当前来自fgets()的字符串。

我尝试使用fputs($handle, $read_line),但结果有些奇怪。

文件数据

新数据行1

新数据行aaa 2

新数据行3

下面是我的PHP代码,将“ aaa”替换为“ abc”。

$file_path = $dir.'test\folder\folder2\file.js';

if($handle = fopen($file_path, 'r+')) {

    while(!feof($handle)) {
        $read_line = fgets($handle);
        if(strpos($read_line, 'aaa')){
            $read_line = str_replace("aaa","abc",$read_line);
        }
        fputs($handle, $read_line);
    }
    fclose($handle);
}

预期结果应该是

新数据行1

新数据行abc 2

新数据行3

但是输出是

新数据行1

新数据行1

a

a

php fopen fgets fwrite
1个回答
0
投票

请记住,如果从第一个字符中找到搜索字符串,则strpos将返回0。因此,请使用!==运算符区分strpos错误和第零个字符的匹配。

if(false !== strpos($read_line, 'aaa')){
     $read_line = str_replace("aaa","abc",$read_line);
}
© www.soinside.com 2019 - 2024. All rights reserved.