Creating streams from strings in PHP

I'm in the process of writing an API that relies on (file-)streams to be passed around.

There are situations where a string instead needs to be used, and for these purposes the data: stream wrapper is used. Initially I thought it was only possible to encode the actual string in base64, which I didn't like because of the added footprint.

  1. <?php
  2.  
  3. $string = "I should have really done some laundry tonight.";
  4.  
  5. $stream = fopen('data://text/plain;base64,' . base64_encode($string),'r');
  6.  
  7. echo stream_get_contents($stream);
  8.  
  9. ?>

Quickly checking out the rfc, it turns out that ';base64' can be omitted to just pass along the raw data, which makes a lot more sense in the context of PHP.

Thankfully, PHP gladly supports it:

  1. <?php
  2.  
  3. $string = "I tried, honestly!";
  4.  
  5. $stream = fopen('data://text/plain,' . $string,'r');
  6.  
  7. echo stream_get_contents($stream);
  8.  
  9. ?>
 1

About

My name is Evert, and I've been writing semi-regularly on this blog since 2006.

I'm currently available for contract work.

more info.

Subscribe

Dropbox

Dropbox is a simple cross-platform online backup and sync application. The first 2GB of space is free, and both you and me get an extra 250MB extra space if you sign up through this link.