» Javascript equivalent for PHP's file_get_contents
399 PHP equivalents
- PHP.JS Licensing
- PHP.JS SVN
- PHP.JS Namespaced
- abs
- acosh
- acos
- addslashes
- aggregate
- aggregate_info
- aggregate_methods
- aggregate_methods_by_list
- aggregate_methods_by_regexp
- aggregate_properties
- aggregate_properties_by_list
- aggregate_properties_by_regexp
- aggregation_info
- array
- array_change_key_case
- array_chunk
- array_combine
- array_count_values
- array_diff
- array_diff_assoc
- array_diff_key
- array_diff_uassoc
- array_diff_ukey
- array_fill
- array_fill_keys
- array_filter
- array_flip
- array_intersect
- array_intersect_assoc
- array_intersect_key
- array_intersect_uassoc
- array_intersect_ukey
- array_keys
- array_key_exists
- array_map
- array_merge
- array_merge_recursive
- array_multisort
- array_pad
- array_pop
- array_product
- array_push
- array_rand
- array_reduce
- array_reverse
- array_search
- array_shift
- array_slice
- array_splice
- array_sum
- array_udiff
- array_udiff_assoc
- array_udiff_uassoc
- array_uintersect
- array_uintersect_assoc
- array_uintersect_uassoc
- array_unique
- array_unshift
- array_values
- array_walk
- array_walk_recursive
- arsort
- asinh
- asin
- asort
- assert
- assert_options
- atan2
- atanh
- atan
- base64_decode
- base64_encode
- basename
- base_convert
- bin2hex
- bindec
- call_user_func
- call_user_func_array
- ceil
- checkdate
- chop
- chr
- chunk_split
- classkit_import
- classkit_method_add
- classkit_method_copy
- classkit_method_redefine
- classkit_method_remove
- classkit_method_rename
- class_exists
- compact
- constant
- convert_uuencode
- cosh
- cos
- count
- count_chars
- crc32
- create_function
- ctype_alnum
- ctype_alpha
- ctype_cntrl
- ctype_digit
- ctype_graph
- ctype_lower
- ctype_print
- ctype_punct
- ctype_space
- ctype_upper
- ctype_xdigit
- current
- date
- date_default_timezone_get
- date_default_timezone_set
- date_parse
- deaggregate
- decbin
- dechex
- decoct
- defined
- define
- deg2rad
- die
- dirname
- doubleval
- each
- echo
- empty
- end
- exit
- explode
- expm1
- exp
- extract
- fclose
- feof
- fgetcsv
- fgetc
- fgetss
- fgets
- filemtime
- filesize
- file
- file_exists
- » file_get_contents
- floatval
- floor
- fmod
- fopen
- fpassthru
- fread
- fseek
- ftell
- function_exists
- func_get_args
- func_get_arg
- func_num_args
- getdate
- getenv
- getlastmod
- getrandmax
- gettimeofday
- gettype
- get_cfg_var
- get_class
- get_class_methods
- get_class_vars
- get_declared_classes
- get_defined_constants
- get_defined_functions
- get_defined_vars
- get_headers
- get_html_translation_table
- get_included_files
- get_meta_tags
- get_object_vars
- get_required_files
- get_resource_type
- gmdate
- gmmktime
- gmstrftime
- gopher_parsedir
- hexdec
- htmlentities
- htmlspecialchars
- htmlspecialchars_decode
- html_entity_decode
- http_build_query
- hypot
- idate
- implode
- import_request_variables
- include
- include_once
- ini_alter
- ini_get
- ini_get_all
- ini_restore
- ini_set
- intval
- in_array
- ip2long
- isset
- is_array
- is_binary
- is_bool
- is_buffer
- is_callable
- is_double
- is_finite
- is_float
- is_infinite
- is_integer
- is_int
- is_long
- is_nan
- is_null
- is_numeric
- is_object
- is_real
- is_resource
- is_scalar
- is_string
- is_unicode
- join
- json_decode
- json_encode
- key
- krsort
- ksort
- lcfirst
- lcg_value
- levenshtein
- localeconv
- localtime
- log10
- log1p
- log
- long2ip
- ltrim
- max
- md5
- md5_file
- method_exists
- microtime
- min
- mktime
- mt_getrandmax
- mt_rand
- natcasesort
- natsort
- next
- nl2br
- nl_langinfo
- number_format
- octdec
- ord
- parse_str
- parse_url
- pathinfo
- pclose
- phpversion
- php_ini_loaded_file
- php_ini_scanned_files
- php_strip_whitespace
- pi
- popen
- pos
- pow
- preg_grep
- preg_quote
- prev
- printf
- print_r
- property_exists
- putenv
- quoted_printable_decode
- quoted_printable_encode
- quotemeta
- rad2deg
- rand
- range
- rawurldecode
- rawurlencode
- readfile
- realpath
- register_shutdown_function
- require
- require_once
- reset
- restore_exception_handler
- rewind
- round
- rsort
- rtrim
- runkit_class_adopt
- runkit_class_emancipate
- runkit_function_add
- runkit_function_copy
- runkit_function_redefine
- runkit_function_remove
- runkit_function_rename
- runkit_import
- runkit_method_add
- runkit_method_copy
- runkit_method_redefine
- runkit_method_remove
- runkit_method_rename
- runkit_superglobals
- serialize
- setcookie
- setlocale
- setrawcookie
- settype
- set_exception_handler
- set_time_limit
- sha1
- sha1_file
- shuffle
- sinh
- sin
- sizeof
- sleep
- sort
- soundex
- split
- sprintf
- sql_regcase
- sqrt
- strcasecmp
- strchr
- strcmp
- strcoll
- strcspn
- strftime
- stripos
- stripslashes
- strip_tags
- stristr
- strlen
- strnatcasecmp
- strnatcmp
- strncasecmp
- strncmp
- strpbrk
- strpos
- strrchr
- strrev
- strripos
- strrpos
- strspn
- strstr
- strtok
- strtolower
- strtotime
- strtoupper
- strtr
- strval
- str_getcsv
- str_ireplace
- str_pad
- str_repeat
- str_replace
- str_rot13
- str_shuffle
- str_split
- str_word_count
- substr
- substr_compare
- substr_count
- substr_replace
- tanh
- tan
- timezone_abbreviations_list
- timezone_identifiers_list
- time
- time_nanosleep
- time_sleep_until
- trim
- uasort
- ucfirst
- ucwords
- uksort
- uniqid
- unserialize
- urldecode
- urlencode
- usleep
- usort
- utf8_decode
- utf8_encode
- var_dump
- var_export
- vprintf
- vsprintf
- wordwrap
PHP to Javascript Project: php.js
This article is part of the 'Porting PHP to Javascript' Project, which aims to decrease the gap between developing for PHP & Javascript.
A lot of people are familiar with PHP's functions, and though Javascript functions are often quite similar, some functions may be missing or addressed differently. The Javascript implementations should be as compliant with the PHP versions as possible, a good indication is that the PHP function manual could also apply to the Javascript version.
Porting crucial PHP functions to Javascript can be fun & useful. Currently some PHP functions have been added, but readers are encouraged to contribute and improve functions by adding comments. Eventually the goal is to save all the functions in one php.js file and make it publicly available for your coding pleasure.
If you choose to contribute, let me know how you want to be credited in the function's comments. You may also want to subscribe to RSS so you receive updates whenever new functions are posted.
This is a Javascript version of the PHP function: file_get_contents.
I have moved out PHP.JS to it's own site. For info & reactions on comments please goto phpjs.org
PHP file_get_contents
Description
file_get_contents - Reads entire file into a string
string file_get_contents( string filename [, int flags [, resource context [, int offset [, int maxlen]]]] )
This function is similar to file(), except that file_get_contents() returns the file in astring, starting at the specified offsetup to maxlen bytes. On failure,file_get_contents() will return FALSE.
Parameters
-
filename
Name of the file to read.
-
flags Warning
For all versions prior to PHP 6, this parameter is called use_include_path and is a bool. The flags parameter is only available since PHP 6. If you use an older version and want to search for filename in the include path, this parameter must be TRUE. Since PHP 6, you have to use the FILE_USE_INCLUDE_PATH flag instead.
The value of flags can be any combination of the following flags (with some restrictions), joined with the binary OR (|) operator.
Available flags
Flag Description FILE_USE_INCLUDE_PATH Search for filename in the include directory. See include_path for more information. FILE_TEXT If unicode semantics are enabled, the default encoding of the read data is UTF-8. You can specify a different encoding by creating a custom context or by changing the default using stream_default_encoding(). This flag cannot be used with FILE_BINARY. FILE_BINARY With this flag, the file is read in binary mode. This is the default setting and cannot be used with FILE_TEXT. -
context
A valid context resource created with stream_context_create(). If you don't need to use a custom context, you can skip this parameter by NULL.
-
offset
The offset where the reading starts.
-
maxlen
Maximum length of data read.
Return Values
The function returns the read data or FALSE on failure.
See Also
Javascript file_get_contents
Source
This is the main source of the Javascript version of PHP's file_get_contents
function file_get_contents( url, flags, context, offset, maxLen ) { // Read the entire file into a string // // version: 906.111 // discuss at: http://phpjs.org/functions/file_get_contents // + original by: Legaev Andrey // + input by: Jani Hartikainen // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Brett Zamir (http://brett-zamir.me) // + input by: Raphael (Ao) RUDLER // + bugfixed by: Brett Zamir (http://brett-zamir.me) // % note 1: This function uses XmlHttpRequest and cannot retrieve resource from different domain. // % note 2: Synchronous by default (as in PHP) so may lock up browser. Can // % note 2: get async by setting a custom "phpjs.async" property to true and "notification" for an // % note 2: optional callback (both as context params, with responseText, and other JS-specific // % note 2: request properties available via 'this'). Note that file_get_contents() will not return the text // % note 2: in such a case (use this.responseText within the callback). Or, consider using // % note 2: jQuery's: $('#divId').load('http://url') instead. // % note 3: The context argument is only implemented for http, and only partially (see below for // % note 3: "Presently unimplemented HTTP context options"); also the arguments passed to // % note 3: notification are incomplete // * example 1: file_get_contents('http://kevin.vanzonneveld.net/pj_test_supportfile_1.htm'); // * returns 1: '123' // Note: could also be made to optionally add to global $http_response_header as per http://php.net/manual/en/reserved.variables.httpresponseheader.php var tmp, headers = [], newTmp = [], k=0, i=0, href = '', pathPos = -1, flagNames = '', content = null; var func = function (value) { return value.substring(1) !== ''; }; // BEGIN REDUNDANT this.php_js = this.php_js || {}; this.php_js.ini = this.php_js.ini || {}; // END REDUNDANT context = context || this.php_js.default_streams_context || null; if (!flags) {flags = 0;} var OPTS = { PHP_FILE_USE_INCLUDE_PATH : 1, PHP_FILE_TEXT : 32, PHP_FILE_BINARY : 64 }; if (typeof flags === 'number') { // Allow for a single string or an array of string flags flagNames = flags; } else { flags = [].concat(flags); for (i=0; i < flags.length; i++) { if (OPTS[flags[i]]) { flagNames = flagNames | OPTS[flags[i]]; } } } if ((flagNames & OPTS.PHP_FILE_USE_INCLUDE_PATH) && this.php_js.ini.include_path && this.php_js.ini.include_path.local_value) { var slash = this.php_js.ini.include_path.local_value.indexOf('/') !== -1 ? '/' : '\\'; url = this.php_js.ini.include_path.local_value+slash+url; } else if (!/^(https?|file):/.test(url)) { // Allow references within or below the same directory (should fix to allow other relative references or root reference; could make dependent on parse_url()) href = this.window.location.href; pathPos = url.indexOf('/') === 0 ? href.indexOf('/', 8)-1 : href.lastIndexOf('/'); url = href.slice(0, pathPos+1)+url; } if (context) { var http_options = context.stream_options && context.stream_options.http; var http_stream = !!http_options; } if (!context || http_stream) { var req = this.window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest(); if (!req) {throw new Error('XMLHttpRequest not supported');} var method = http_stream ? http_options.method : 'GET'; var async = !!(context && context.stream_params && context.stream_params['phpjs.async']); req.open(method, url, async); if (async) { var notification = context.stream_params.notification; if (typeof notification === 'function') { req.onreadystatechange = function (aEvt) { // aEvt has stopPropagation(), preventDefault(); see https://developer.mozilla.org/en/NsIDOMEvent // Other XMLHttpRequest properties: multipart, responseXML, status, statusText, upload, withCredentials; overrideMimeType() /* PHP Constants: STREAM_NOTIFY_RESOLVE 1 A remote address required for this stream has been resolved, or the resolution failed. See severity for an indication of which happened. STREAM_NOTIFY_CONNECT 2 A connection with an external resource has been established. STREAM_NOTIFY_AUTH_REQUIRED 3 Additional authorization is required to access the specified resource. Typical issued with severity level of STREAM_NOTIFY_SEVERITY_ERR. STREAM_NOTIFY_MIME_TYPE_IS 4 The mime-type of resource has been identified, refer to message for a description of the discovered type. STREAM_NOTIFY_FILE_SIZE_IS 5 The size of the resource has been discovered. STREAM_NOTIFY_REDIRECTED 6 The external resource has redirected the stream to an alternate location. Refer to message . STREAM_NOTIFY_PROGRESS 7 Indicates current progress of the stream transfer in bytes_transferred and possibly bytes_max as well. STREAM_NOTIFY_COMPLETED 8 There is no more data available on the stream. STREAM_NOTIFY_FAILURE 9 A generic error occurred on the stream, consult message and message_code for details. STREAM_NOTIFY_AUTH_RESULT 10 Authorization has been completed (with or without success). STREAM_NOTIFY_SEVERITY_INFO 0 Normal, non-error related, notification. STREAM_NOTIFY_SEVERITY_WARN 1 Non critical error condition. Processing may continue. STREAM_NOTIFY_SEVERITY_ERR 2 A critical error occurred. Processing cannot continue. */ var objContext = {}; // properties are not available in PHP, but offered on notification via 'this' for convenience objContext.responseText = req.responseText; objContext.responseXML = req.responseXML; objContext.status = req.status; objContext.statusText = req.statusText; objContext.readyState = req.readyState; objContext.evt = aEvt; // notification args: notification_code, severity, message, message_code, bytes_transferred, bytes_max (all int's except string 'message') // Need to add message, etc. var bytes_transferred; switch(req.readyState) { case 0: // UNINITIALIZED open() has not been called yet. notification.call(objContext, 0, 0, '', 0, 0, 0); break; case 1: // LOADING send() has not been called yet. notification.call(objContext, 0, 0, '', 0, 0, 0); break; case 2: // LOADED send() has been called, and headers and status are available. notification.call(objContext, 0, 0, '', 0, 0, 0); break; case 3: // INTERACTIVE Downloading; responseText holds partial data. bytes_transferred = Math.floor(req.responseText.length/2); // Two characters for each byte notification.call(objContext, 7, 0, '', 0, bytes_transferred, 0); break; case 4: // COMPLETED The operation is complete. if (req.status >= 200 && req.status < 400) { bytes_transferred = Math.floor(req.responseText.length/2); // Two characters for each byte notification.call(objContext, 8, 0, '', req.status, bytes_transferred, 0); } else if (req.status === 403) { // Fix: These two are finished except for message notification.call(objContext, 10, 2, '', req.status, 0, 0); } else { // Errors notification.call(objContext, 9, 2, '', req.status, 0, 0); } break; default: throw 'Unrecognized ready state for file_get_contents()'; } } } } if (http_stream) { var sendHeaders = http_options.header && http_options.header.split(/\r?\n/); var userAgentSent = false; for (i=0; i < sendHeaders.length; i++) { var sendHeader = sendHeaders[i]; var breakPos = sendHeader.search(/:\s*/); var sendHeaderName = sendHeader.substring(0, breakPos); req.setRequestHeader(sendHeaderName, sendHeader.substring(breakPos+1)); if (sendHeaderName === 'User-Agent') { userAgentSent = true; } } if (!userAgentSent) { var user_agent = http_options.user_agent || (this.php_js.ini.user_agent && this.php_js.ini.user_agent.local_value); if (user_agent) { req.setRequestHeader('User-Agent', user_agent); } } content = http_options.content || null; /* // Presently unimplemented HTTP context options var request_fulluri = http_options.request_fulluri || false; // When set to TRUE, the entire URI will be used when constructing the request. (i.e. GET http://www.example.com/path/to/file.html HTTP/1.0). While this is a non-standard request format, some proxy servers require it. var max_redirects = http_options.max_redirects || 20; // The max number of redirects to follow. Value 1 or less means that no redirects are followed. var protocol_version = http_options.protocol_version || 1.0; // HTTP protocol version var timeout = http_options.timeout || (this.php_js.ini.default_socket_timeout && this.php_js.ini.default_socket_timeout.local_value); // Read timeout in seconds, specified by a float var ignore_errors = http_options.ignore_errors || false; // Fetch the content even on failure status codes. */ } // We should probably change to an || "or", in order to have binary as the default (as it is in PHP), but this method might not be well-supported; check for its existence instead or will this be to much trouble? if (flagNames & OPTS.PHP_FILE_BINARY && !(flagNames & OPTS.PHP_FILE_TEXT)) { // These flags shouldn't be together req.sendAsBinary(content); // In Firefox, only available FF3+ } else { req.send(content); } tmp = req.getAllResponseHeaders(); if (tmp) { tmp = tmp.split('\n'); for (k=0; k < tmp.length; k++) { if (func(tmp[k])) { newTmp.push(tmp[k]); } } tmp = newTmp; for (i=0; i < tmp.length; i++) { headers[i] = tmp[i]; } this.$http_response_header = headers; // see http://php.net/manual/en/reserved.variables.httpresponseheader.php } if (offset || maxLen) { if (maxLen) { return req.responseText.substr(offset || 0, maxLen); } return req.responseText.substr(offset); } return req.responseText; } return false; }
Examples
Currently there is 1 example
Example 1
file_get_contents('http://kevin.vanzonneveld.net/pj_test_supportfile_1.htm');And that would return
'123'More about this Project
Download php.js
To easily include it in your code, every function currently available is stored in
Normal
- uncompressed source: php.js
- minified: php.min.js [recommended]
- compressed: php.packed.js
Namespaced What is 'namespaced?'
- uncompressed source: php.namespaced.js
- minified: php.namespaced.min.js
- compressed: php.namespaced.packed.js
To download use Right click, Save Link As
Generally the best way is to use a minified version and gzip it
Credits
Respect & awards go to everybody who has contributed in some way so far:
Your name here?
Contributing is as easy as adding a comment with better code, or code for a new function.
Any contribution leading to improvement will directly get your name & link here.
Coming Project features
Project features that we are currently working on:
- Done - Site. A place for php.js of it's own. See: phpjs.org.
- Done - Compile. Compile your own php.js version, with only the functions you need. Should generate a hash with which you can retrieve latest versions of your php.js combination. Done - Testsuite. A better test-suite that can be ran locally so developers can easily test before commiting. Also the testing itself should be more thorough.
- Done - Versioning. Individual functions are versioned, but the entire library should be versioned as well.
Stay up to date
You can track my blog
articles and
comments. You may also find my
bookmarks interesting. Or
Follow me on Twitter
Like this article?
|
Then Dzone it! Or use another bookmark button below to show your support & help me spread the word. |
RelatedArticles like this one» PHP.JS Licensing |
tags: programming, php, javascript
category: Programming - Javascript - PHP equivalents
read: 12,670 times
Add Comment
PHP.JS is outgroing this blog and moving to it's own space. Please leave your comment here: http://phpjs.org/functions/file_get_contents










tagcloud

#11. Kevin on 25 January 2009
#10. Brett Zamir on 19 January 2009
#9. Kevin on 14 January 2009
#8. Brett Zamir on 13 January 2009
function get_meta_tags (file) {
var fulltxt = file_get_contents(file).match(/^[^]*<\/head>/i);
/* Kevin, you could use this for testing instead of the line above:
... [more] var fulltxt = '<meta name="author" content="name">'+
'<meta name="keywords" content="php documentation">'+
'<meta name="DESCRIPTION" content="a php manual">'+
'<meta name="geo.position" content="49.33;-86.59">'+
'</head>';*/
var patt = /<meta[^>]*?>/gim;
var txt, match, name, arr={};
while ((txt = patt.exec(fulltxt)) != null) {
var patt1 = /<meta\s+.*?name\s*=\s*(['"]?)(.*?)\1\s+.*?content\s*=\s*(['"]?)(.*?)\3/gim;
while ((match = patt1.exec(txt)) != null) {
name = match[2].replace(/\W/g, '_').toLowerCase();
arr[name] = match[4];
}
var patt2 = /<meta\s+.*?content\s*=\s*(['"?])(.*?)\1\s+.*?name\s*=\s*(['"]?)(.*?)\3/gim;
while ((match = patt2.exec(txt)) != null) {
name = match[4].replace(/\W/g, '_').toLowerCase();
arr[name] = match[2];
}
}
return arr;
}
#7. Kevin on 13 November 2008
#6. Enrique González on 10 November 2008
I'm not quite sure if this functions fit correctly in php.js. Both functions won't work with http files in php, but as I said before, php works with local files and js does not, so working with remote http files may be somehow equivalent.
Also the file_exists function may have different answers. Status code 200 means something exists, 404 it doesn't, but there are lot's of codes that mean different things.
#5. Kevin on 02 October 2008
@ Philippe Baumann: Good to see you back! Don't forget to checkout work in progress at: http://phpjs.org That site will have much better submit features! Added your functions btw, thanks!
#4. Philippe Baumann on 02 October 2008
I've found the following two functions in my development folder. Admittedly, they're not used very often and I also didn't really come up with the first one myself, but you might still find them a nice addition:
By the way: Is there a better way to chat and submit functions than posting in the article for another function?
#3. Adnan Siddiqi on 02 October 2008
#2. Kevin on 18 July 2008
#1. Kyle Itterly on 03 July 2008