downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

glob://> <zlib://
Last updated: Fri, 20 May 2011

view this page in

data://

data://Data (RFC 2397)

Descripción

La envoltura del flujo data: (» RFC 2397) está disponible desde PHP 5.2.0.

Opciones

  • data://text/plain;base64,

Opciones

Resumen de la envolutra
Atributo Permitido
Restringido por allow_url_fopen No
Restringido por allow_url_include
Permite Lecturas
Permite Escrituras No
Permite Añadir contenido No
Permite Lectura y Escritura Simultanea No
Permite usar la función stat() No
Permite usar la función unlink() No
Permite usar la función rename() No
Permite usar la función mkdir() No
Permite usar la función rmdir() No

Ejemplos

Example #1 Mostrar contenidos de data://

<?php
// muestra "I love PHP"
echo file_get_contents('data://text/plain;base64,SSBsb3ZlIFBIUAo=');
?>

Example #2 Obtener el Tipo de Medio

<?php
$fp   
fopen('data://text/plain;base64,''r');
$meta stream_get_meta_data($fp);

// muestra "text/plain"
echo $meta['mediatype'];
?>


glob://> <zlib://
Last updated: Fri, 20 May 2011
 
add a note add a note User Contributed Notes data://
from dot php dot net at brainbox dot cz 18-Nov-2010 12:37
When passing plain string without base64 encoding, do not forget to pass the string through URLENCODE(), because PHP automatically urldecodes all entities inside passed string (and therefore all + get lost, all % entities will be converted to the corresponding characters).

In this case, PHP is strictly compilant with the RFC 2397. Section 3 states that passes data should be either in base64 encoding or urlencoded.

VALID USAGE:
<?php
$fp
= fopen('data:text/plain,'.urlencode($data), 'rb'); // urlencoded data
$fp = fopen('data:text/plain;base64,'.base64_encode($data), 'rb'); // base64 encoded data
?>

Demonstration of invalid usage:
<?php
$data
= 'Günther says: 1+1 is 2, 10%40 is 20.';

$fp = fopen('data:text/plain,'.$data, 'rb'); // INVALID, never do this
echo stream_get_contents($fp);
// Günther says: 1 1 is 2, 10@ is 20. // ERROR

$fp = fopen('data:text/plain,'.urlencode($data), 'rb'); // urlencoded data
echo stream_get_contents($fp);
// Günther says: 1+1 is 2, 10%40 is 20. // OK

// Valid option 1: base64 encoded data
$fp = fopen('data:text/plain;base64,'.base64_encode($data), 'rb'); // base64 encoded data
echo stream_get_contents($fp);
// Günther says: 1+1 is 2, 10%40 is 20. // OK
?>
admin deskbitz net 02-May-2010 07:54
If you want to create a gd-image directly out of a sql-database-field you might want to use:

<?php
$jpegimage
= imagecreatefromjpeg("data://image/jpeg;base64," . base64_encode($sql_result_array['imagedata']));
?>

this goes also for gif, png, etc using the correct "imagecreatefrom$$$"-function and mime-type.
sandaimespaceman at gmail dot com 07-Sep-2008 01:30
Now PHP supports data: protocol w/out "//" like data:text/plain, not data://text/plain,

I tried it.
togos00 at gmail dot com 08-Apr-2008 07:56
Note that the official data URI scheme does not include a double slash after the colon - that you must include it when making calls to PHP is an artifact of the designers' misunderstanding of URL syntax.

To automatically convert proper data URIs to ones understood by PHP, you can use code such as the following:

<?php
function convertUriForPhp( $uri ) {
    if(
preg_match('/^data:(?!\\/\\/)(.*)$/',$uri,$bif) ) {
        return
'data://' . $bif[1];
    } else {
        return
$uri;
    }
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites