使用preg_match处理文件中的文本的问题

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

我正在尝试匹配文件中的文本,但preg_match不能正常工作。

  • 文件类型: .cfg
  • 编码: utf8

文件只有一行。File screenshot

我的对象:

public function checkConfig()
{

    $file = dirname(__FILE__) . "log_checker.cfg";
    $handle = fopen($file, "r");
    $file_text = fread($handle, filesize($file));
    fclose($handle);
    if (!$this->checkValidity($file_text)) {
        return;
    }

}
private function checkValidity(string $config_text)
{

    $config_array = explode("\n", $config_text);

    foreach ($config_array as $row) {
        if (preg_match('/^\{\"dirs\"\:\[$/', $row)) {               
            continue;
        }else{
            return false;
        }
    }
     return true;
}

Preg_match仅不能与$ row一起使用,但可以与'{“ dirs”:['。]一起使用。

我尝试更改编码

,更改文件加载功能等。PS .:我知道,如果在checkValidity中通过取反可以看起来更好,但是我只显示了部分代码。

我正在尝试匹配文件中的文本,但是preg_match不能正常工作。文件类型:.cfg编码:utf8文件只有一行。文件屏幕快照我的对象:公共函数checkConfig(){$ file = ...

php regex fopen
1个回答
0
投票

问题出在您当前的逻辑中。只要数组元素之一未通过preg_match测试,您将返回False。但是,如果字符串{"dirs":[由换行符终止,则在“爆炸”之后,您将在config_array中使用:

© www.soinside.com 2019 - 2024. All rights reserved.