有没有办法在PHP中访问字符串作为文件句柄?

我在服务器上,我只限于PHP 5.2.6,这意味着我无法使用str_getcsv.我正在使用,而不是fgetcsv,它需要“一个有效的文件指针,指向由fopen(),popen()或fsockopen()成功打开的文件.”操作.

我的问题是:有没有办法将字符串作为文件句柄访问?

我的另一个选择是将字符串写入文本文件,然后通过fopen()访问它然后使用fgetcsv,但我希望有一种方法可以直接执行此操作,例如在perl中.

解决方法:

如果你看一下str_getcsv手册页上的用户注释,你会发现this note from daniel,它提出了这个功能(引用):

<?php
if (!function_exists('str_getcsv')) {
    function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
        $fiveMBs = 5 * 1024 * 1024;
        $fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');
        fputs($fp, $input);
        rewind($fp);

        $data = fgetcsv($fp, 1000, $delimiter, $enclosure); //  $escape only got added in 5.3.0

        fclose($fp);
        return $data;
    }
}
?>

它似乎完全符合你的要求:它使用一个指向内存中临时文件句柄的流,在其上使用fgetcsv.

有关(其中包括)php:// temp stream wrapper的文档,请参阅PHP input/output streams.

当然,你应该测试它对你有用 – 但是,至少,这应该让你知道如何实现这个;-)

上一篇:可以在打开的文件句柄上使用Linux inotify吗?


下一篇:Python文件操作总结