我必须在一段时间循环中执行正则表达式,因为它需要很多数据才能一次完成。到现在为止,我可以抛出数据,正则表达式也可以工作,但数据没有被存储。那么我该怎么做呢?
这是我现在的代码:
$handle = @fopen($PathToFile, "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
if (preg_match_all('/^w+s+d+s('. $SelectedTime .':d+.d+).d+.d+s(.+)/im', $buffer, $matches, PREG_SET_ORDER)) {
$decodeData[] .= $matches;
}
else {
}
}
var_dump($decodeData);
}
fclose($handle);
为了寻求帮助,我将非常高兴
这是错误的语法,它不是字符串连接。
而不是
$decodeData[] .= $matches;
输出:
$decodeData[0] = "结果1结果2结果3结果4";
用
$decodeData[] = $matches;
输出:
$decodeData[0] = "结果1";
$decodeData[1] = "结果2";
$decodeData[2] = "结果3";
$decodeData[3] = "结果4";
使用preg_quote
函数正确转义$SelectedTime
变量并在没有.=
的情况下使用$decodedData[] = $matches
。
$handle = @fopen($PathToFile, "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$pattern = '/^w+s+d+s('. preg_quote($SelectedTime) .':d+.d+).d+.d+s(.+)/im';
if (preg_match_all($pattern, $buffer, $matches, PREG_SET_ORDER)) {
$decodeData[] = $matches; // just assignment operator
}
else {
}
}
var_dump($decodeData);
}
fclose($handle);