2012-05-22 57 views
1

我正在尋找一種分割字符串並返回兩個部分的非常有效的方法。如何在如此多字符PHP之後將字符串拆分爲兩位?

我需要分割的字符串長度爲893,004個字符,字符串中的每一行長度爲163個字符,我想在100行後分割它。

是從一個文件中使用正則表達式得到的字符串文件的快捷表示,

'/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' // 163 characters 
'/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' // 163 characters 
'/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' '/[a-z0-9]{40}/i' // 163 characters 

等等和洛爾,

我試圖在後100線分割字符串,

// FILE CONTENTS 
$content = file_get_contents($file); 
// GET PARSER GXDE 
$split = preg_split('/^[a-z0-9\s]{16300}$/i', $content, 1); // REGEX DOESNT WORK 
var_dump($split[0]); 

我只是想在文件中的100行之後拆分字符串如何輕鬆完成?

+0

你可以用['preg_last_error'](http://nl3.php.net/preg_last_error)檢查最後一個錯誤,我假設達到了一些限制。正則表達式不是去這裏最有效的方法。 Treffynnon的建議似乎很恰當。 – Wrikken

+0

這聽起來像是你想要處理大塊文件:爲什麼不將[** split **](http://linux.die.net/man/1/split)文件轉換成100個文件行呢? – salathe

回答

3

我只是使用file()來獲取文件行作爲數組或fgets()來逐行提取文件。這將允許您使用一個簡單的計數器在適當的行數下打破文件。

+0

是的,我想到了這一點,但有時文件可能超過150萬行,我真的不想迭代它太多,我需要提取數據的第一部分,並將其他部分重寫回原始文件,如果有意義的話 – cgwebprojects

+1

無論是通過正則表達式還是通過fgets來完成,在這兩種情況下,整個文件都必須被讀取,檢查,寫入等。您不能「重寫文件的一部分」。那麼,除了個人喜好,還有其他什麼原因,你不想'重複這麼多'? – Wrikken

+0

從來沒有想過這樣的猜測,我只是想再次想到事情大聲笑! – cgwebprojects

0

如果你不需要,你真的不應該使用正則表達式。正則表達式是一個相對昂貴的操作,如果你使用正則表達式來獲得固定長度的字符串,這只是浪費處理。

目前還不清楚「100行後分割字符串」是什麼意思。 the docs這個改編的例子將以100行塊寫出文件(如果所有行都是包括換行符的163個字符)。

$handle = @fopen("/inputfile.txt", "r"); 
if ($handle) { 
    $i = 0; 
    while (($buffer = fgets($handle, 163000)) !== false) { 
     $i++; 
     file_put_contents("chunk$i.txt", $buffer); 
    } 
    fclose($handle); 
} 
相關問題