潜在的内存问题 strtok
:
由于建议的解决方案之一使用strtok
,因此不幸的是,它没有指出潜在的内存问题(尽管它声称具有内存效率)。当使用strtok
根据本手册中,:
请注意,只有第一次调用strtok时才使用string参数。随后的对strtok的每次调用都只需要使用令牌,因为它可以跟踪令牌在当前字符串中的位置。
通过将文件加载到内存中来完成此操作。如果您使用的是大文件,则在循环浏览文件时需要刷新它们。
<?php
function process($str) {
$line = strtok($str, PHP_EOL);
/*do something with the first line here...*/
while ($line !== FALSE) {
// get the next line
$line = strtok(PHP_EOL);
/*do something with the rest of the lines here...*/
}
//the bit that frees up memory
strtok('', '');
}
如果您只关心物理文件(例如,数据挖掘):
根据手册,对于文件上传部分,您可以使用以下file
命令:
//Create the array
$lines = file( $some_file );
foreach ( $lines as $line ) {
//do something here.
}
s($myString)->normalizeLineEndings()
可在github.com/delight-im/PHP-Str(MIT许可下的库)中使用,该库还有许多其他有用的字符串帮助器。您可能需要看一下源代码。