如何在 PHP 的 While 循环中使用正则表达式



我必须在一段时间循环中执行正则表达式,因为它需要很多数据才能一次完成。到现在为止,我可以抛出数据,正则表达式也可以工作,但数据没有被存储。那么我该怎么做呢?

这是我现在的代码:

$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);

最新更新