簡體   English   中英

如何在PHP中將字符串轉換為字符的第n個出現到第n個出現?

[英]How to get string to nth occurrence to nth occurrence of character in PHP?

我正在嘗試將巨大的字符串解析為PHP中的較小字符串。 我每個部分都有一個以\\n結尾的字符串。 我想第2次之后獲得的句子\\n至第五屆\\n

我設法做到了這一點,但是由於我要處理的字符串很大,因此需要花費大量時間。 這是我使用的方法:

$arrayBuffer = explode("\n", $buffer);
for($i = 0; $i < $NumOfRequests; $i++) {
    $tmpBuffer = "";
    for($j = $i * $NumOfAllowedRows; $j < ($i + 1) * $NumOfAllowedRows; $j++) {
        // stop the loop if it reached the last cell of arrayBuffer, to avoid Index Out Of Bound Exception
        if($j === $arrayBuffer[count($arrayBuffer)]){
            break;
        }
        $tmpBuffer = $tmpBuffer . $arrayBuffer[$j] . "\n";                  
    }
         // do something with the tmpBuffer                 
}

目的是從第一個$ buffer本身獲取一個子字符串,而不創建另一個數組。

我發現了使用explode和implode的一個好的解決方案,它足夠快,這是代碼示例:

$buffer = "aaa\nbbb\nccc\nddd\neee\nfff\nggg\nhhh\niii\n"; // enter file path here
for($i = 0; $i < 5 ; $i++){

$arr = explode("\n", $buffer);
//strlen(implode("\n", array_slice($arr, 0, 6)));
$position = (strlen(implode("\n", array_slice($arr, 0, 3))));

$tmpBuffer = substr($buffer,0,$position);
$buffer = substr($buffer, $position);

error_log("tmpbuffer : ".$tmpBuffer).PHP_EOL;
error_log("buffer : " . $buffer).PHP_EOL;

explode將把字符串划分為和平,然后我得到字符在字符串中的第n個出現,strlen然后將獲得子字符串的長度,直到第n個出現。

暫無
暫無

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

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