簡體   English   中英

如何在 PHP 的 While 循環中使用正則表達式?

[英]How can I use Regex in a While Loop in PHP?

我必須在 While 循環中執行 Regex,因為它需要大量數據才能一次性完成。 現在我可以去扔數據,正則表達式也可以工作,但數據沒有被存儲。 那么我該怎么做呢?

這是我現在的代碼:

$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] = "Result1Result2Result3Result4";

$decodeData[] = $matches;

輸出:

$decodeData[0] = "Result1";
$decodeData[1] = "Result2";
$decodeData[2] = "Result3";
$decodeData[3] = "Result4";

您需要使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM