我正在尝试匹配文件中的文本,但preg_match不能正常工作。
文件只有一行。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 = ...
问题出在您当前的逻辑中。只要数组元素之一未通过preg_match
测试,您将返回False。但是,如果字符串{"dirs":[
由换行符终止,则在“爆炸”之后,您将在config_array
中使用: