# params

function_name: ftp_set_option
name: value
type: bool
description:
<p class="para">
       This parameter depends on which <code class="parameter">option</code> is chosen
       to be altered.
      </p>


function_name: ftp_site
name: command
type: string
description:
<p class="para">
       The SITE command. Note that this parameter isn&#039;t escaped so there may
       be some issues with filenames containing spaces and other characters.
      </p>


function_name: ftp_ssl_connect
name: timeout
type: int
initializer: 90
description:
<p class="para">
       This parameter specifies the timeout for all subsequent network operations.
       If omitted, the default value is 90 seconds. The timeout can be changed and
       queried at any time with <span class="function">ftp_set_option</span> and
       <span class="function">ftp_get_option</span>.
      </p>


function_name: GearmanClient.addOptions
name: option
type: int
description:
<p class="para">
       The options to add.
       One of the following constants, or a combination of
       them using the bitwise OR operator (<q class="quote">|</q>):
       <strong><code><a href="gearman.constants.html#constant.gearman-client-generate-unique">GEARMAN_CLIENT_GENERATE_UNIQUE</a></code></strong>,
       <strong><code><a href="gearman.constants.html#constant.gearman-client-non-blocking">GEARMAN_CLIENT_NON_BLOCKING</a></code></strong>,
       <strong><code><a href="gearman.constants.html#constant.gearman-client-unbuffered-result">GEARMAN_CLIENT_UNBUFFERED_RESULT</a></code></strong> or
       <strong><code><a href="gearman.constants.html#constant.gearman-client-free-tasks">GEARMAN_CLIENT_FREE_TASKS</a></code></strong>.
      </p>


function_name: GearmanClient.addServers
name: servers
type: string
description:
<p class="para">
       A comma-separated list of servers, each server specified in the format &#039;<code class="literal">host:port</code>&#039;.
      </p>


function_name: GearmanClient.addTaskStatus
name: context
type: mixed
description:
<p class="para">
       Data to be passed to the status callback, generally a reference to an array or object
      </p>


function_name: GearmanJob.sendStatus
name: numerator
type: int
description:
<p class="para">
       The numerator of the precentage completed expressed as a fraction.
      </p>


function_name: GearmanJob.sendStatus
name: denominator
type: int
description:
<p class="para">
       The denominator of the precentage completed expressed as a fraction.
      </p>


function_name: GearmanWorker.addFunction
name: function
type: callable
description:
<p class="para">
       A callback that gets called when a job for the registered function name is submitted
      </p>


function_name: GearmanWorker.addFunction
name: context
type: mixed
description:
<p class="para">
       A reference to arbitrary application context data that can be modified by the worker function
      </p>


function_name: GearmanWorker.addServers
name: servers
type: string
description:
<p class="para">
       A comma separated list of job servers in the format host:port. If no port is
      specified, it defaults to 4730.
      </p>


function_name: GearmanWorker.setTimeout
name: timeout
type: int
description:
<p class="para">
       An interval of time in milliseconds.  A negative value indicates an infinite timeout.
      </p>


function_name: ldap_add
name: ldap
type: LDAP\Connection
description:
<p class="para">
       An <span class="classname">LDAP\Connection</span> instance, returned by <span class="function">ldap_connect</span>.
      </p>


function_name: ldap_add
name: entry
type: array
description:
<p class="para">
       An array that specifies the information about the entry. The values in
       the entries are indexed by individual attributes.
       In case of multiple values for an attribute, they are indexed using
       integers starting with 0.
       <div class="informalexample">
        <div class="example-contents">
     <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$entry</span><span style="color: #007700">[</span><span style="color: #DD0000">"attribute1"</span><span style="color: #007700">] = </span><span style="color: #DD0000">"value"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$entry</span><span style="color: #007700">[</span><span style="color: #DD0000">"attribute2"</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">] = </span><span style="color: #DD0000">"value1"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$entry</span><span style="color: #007700">[</span><span style="color: #DD0000">"attribute2"</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">] = </span><span style="color: #DD0000">"value2"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: ldap_add
name: controls
type: null
description:
<p class="para">
       Array of <a href="ldap.controls.html" class="link">LDAP Controls</a> to send with the request.
      </p>


function_name: ldap_connect
name: uri
type: null
description:
<p class="para">
       A full LDAP URI of the form <code class="literal">ldap://hostname:port</code>
       or <code class="literal">ldaps://hostname:port</code> for SSL encryption.
      </p>
      <p class="para">
       You can also provide multiple LDAP-URIs separated by a space as one string
      </p>
      <p class="para">
       Note that <code class="literal">hostname:port</code> is not a supported LDAP URI as the schema is missing.
      </p>


function_name: ldap_control_paged_result_response
name: link
type: resource
description:
<p class="para">
       An LDAP resource, returned by <span class="function">ldap_connect</span>.
      </p>


function_name: ldap_control_paged_result
name: iscritical
type: bool
description:
<p class="para">
       Indicates whether the pagination is critical or not. 
       If true and if the server doesn&#039;t support pagination, the search
       will return no result.
      </p>


function_name: ldap_control_paged_result
name: cookie
type: string
initializer: ""
description:
<p class="para">
       An opaque structure sent by the server 
       (<span class="function">ldap_control_paged_result_response</span>).
      </p>


function_name: ldap_count_entries
name: result
type: LDAP\Result
description:
<p class="para">
       An <span class="classname">LDAP\Result</span> instance, returned by <span class="function">ldap_list</span> or <span class="function">ldap_search</span>.
      </p>


function_name: ldap_count_references
name: ldap
type: LDAP\Connection
description:
<p class="para">
      An <span class="classname">LDAP\Connection</span> instance, returned by <span class="function">ldap_connect</span>.
     </p>


function_name: ldap_count_references
name: result
type: LDAP\Result
description:
<p class="para">
      An <span class="classname">LDAP\Result</span> instance, returned by <span class="function">ldap_list</span> or <span class="function">ldap_search</span>.
     </p>


function_name: ldap_escape
name: flags
type: int
description:
<p class="para">
       The context the escaped string will be used in:
       <strong><code>LDAP_ESCAPE_FILTER</code></strong> for filters to be used with
       <span class="function">ldap_search</span>, or
       <strong><code>LDAP_ESCAPE_DN</code></strong> for DNs.
       If neither flag is passed, all chars are escaped.
      </p>


function_name: ldap_exop_passwd
name: old_password
type: string
initializer: ""
description:
<p class="para">
       The old password of this user. May be ommited depending of server configuration.
     </p>


function_name: ldap_exop_passwd
name: new_password
type: string
initializer: ""
description:
<p class="para">
       The new password for this user. May be omitted or empty to have a generated password.
     </p>


function_name: ldap_exop_passwd
name: controls
type: array
description:
<p class="para">
       If provided, a password policy request control is send with the request and this is
       filled with an array of <a href="ldap.controls.html" class="link">LDAP Controls</a>
       returned with the request.
     </p>


function_name: ldap_exop_refresh
name: ttl
type: int
description:
<p class="para">
       Time in seconds (between 1 and 31557600) that the
       client requests that the entry exists in the directory before being
       automatically removed.
     </p>


function_name: ldap_exop
name: request_oid
type: string
description:
<p class="para">
       The extended operation request OID. You may use one of <strong><code><a href="ldap.constants.html#constant.ldap-exop-start-tls">LDAP_EXOP_START_TLS</a></code></strong>, <strong><code><a href="ldap.constants.html#constant.ldap-exop-modify-passwd">LDAP_EXOP_MODIFY_PASSWD</a></code></strong>, <strong><code><a href="ldap.constants.html#constant.ldap-exop-refresh">LDAP_EXOP_REFRESH</a></code></strong>, <strong><code><a href="ldap.constants.html#constant.ldap-exop-who-am-i">LDAP_EXOP_WHO_AM_I</a></code></strong>, <strong><code><a href="ldap.constants.html#constant.ldap-exop-turn">LDAP_EXOP_TURN</a></code></strong>, or a string with the OID of the operation you want to send.
     </p>


function_name: ldap_exop
name: request_data
type: string
description:
<p class="para">
       The extended operation request data. May be NULL for some operations like <strong><code><a href="ldap.constants.html#constant.ldap-exop-who-am-i">LDAP_EXOP_WHO_AM_I</a></code></strong>, may also need to be BER encoded.
     </p>


function_name: ldap_exop
name: controls
type: array
description:
<p class="para">
      Array of <a href="ldap.controls.html" class="link">LDAP Controls</a> to send with the request.
     </p>


function_name: ldap_exop
name: response_data
type: string
description:
<p class="para">
       Will be filled with the extended operation response data if provided.
       If not provided you may use ldap_parse_exop on the result object
       later to get this data.
     </p>


function_name: ldap_exop
name: response_oid
type: string
description:
<p class="para">
       Will be filled with the response OID if provided, usually equal to the request OID.
     </p>


function_name: ldap_explode_dn
name: with_attrib
type: int
description:
<p class="para">
       Used to request if the RDNs are returned with only values or their
       attributes as well.  To get RDNs with the attributes (i.e. in
       attribute=value format) set <code class="parameter">with_attrib</code> to 0
       and to get only values set it to 1.
      </p>


function_name: ldap_get_option
name: option
type: int
description:
<p class="para">
       The parameter <code class="parameter">option</code> can be one of:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Type</th>
           <th>since</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-deref">LDAP_OPT_DEREF</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-sizelimit">LDAP_OPT_SIZELIMIT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-timelimit">LDAP_OPT_TIMELIMIT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-network-timeout">LDAP_OPT_NETWORK_TIMEOUT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-protocol-version">LDAP_OPT_PROTOCOL_VERSION</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-error-number">LDAP_OPT_ERROR_NUMBER</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-diagnostic-message">LDAP_OPT_DIAGNOSTIC_MESSAGE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>
 
          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-referrals">LDAP_OPT_REFERRALS</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-restart">LDAP_OPT_RESTART</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-host-name">LDAP_OPT_HOST_NAME</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-error-string">LDAP_OPT_ERROR_STRING</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-matched-dn">LDAP_OPT_MATCHED_DN</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-server-controls">LDAP_OPT_SERVER_CONTROLS</a></code></strong></td>
           <td><span class="type">array</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-client-controls">LDAP_OPT_CLIENT_CONTROLS</a></code></strong></td>
           <td><span class="type">array</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-keepalive-idle">LDAP_OPT_X_KEEPALIVE_IDLE</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-keepalive-probes">LDAP_OPT_X_KEEPALIVE_PROBES</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-keepalive-interval">LDAP_OPT_X_KEEPALIVE_INTERVAL</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-cacertdir">LDAP_OPT_X_TLS_CACERTDIR</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-cacertfile">LDAP_OPT_X_TLS_CACERTFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-certfile">LDAP_OPT_X_TLS_CERTFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-cipher-suite">LDAP_OPT_X_TLS_CIPHER_SUITE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-crlcheck">LDAP_OPT_X_TLS_CRLCHECK</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code>LDAP_OPT_X_TLS_CRL_NONE</code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code>LDAP_OPT_X_TLS_CRL_PEER</code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code>LDAP_OPT_X_TLS_CRL_ALL</code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-crlfile">LDAP_OPT_X_TLS_CRLFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-dhfile">LDAP_OPT_X_TLS_DHFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-keyfile">LDAP_OPT_X_TLS_KEYFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code>LDAP_OPT_X_TLS_PACKAGE</code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-protocol-min">LDAP_OPT_X_TLS_PROTOCOL_MIN</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-random-file">LDAP_OPT_X_TLS_RANDOM_FILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>7.1</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-require-cert">LDAP_OPT_X_TLS_REQUIRE_CERT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: ldap_list
name: attributes
type: array
initializer: []
description:
<p class="para">
       An array of the required attributes, e.g. array(&quot;mail&quot;, &quot;sn&quot;, &quot;cn&quot;).
       Note that the &quot;dn&quot; is always returned irrespective of which attributes
       types are requested.
      </p>
      <p class="para">
       Using this parameter is much more efficient than the default action
       (which is to return all attributes and their associated values).
       The use of this parameter should therefore be considered good
       practice.
      </p>


function_name: ldap_list
name: attributes_only
type: int
description:
<p class="para">
       Should be set to 1 if only attribute types are wanted. If set to 0
       both attributes types and attribute values are fetched which is the
       default behaviour.
      </p>


function_name: ldap_list
name: sizelimit
type: int
initializer: -1
description:
<p class="para">
       Enables you to limit the count of entries fetched. Setting this to 0
       means no limit.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        This parameter can NOT override server-side preset sizelimit. You can
        set it lower though.
       </p>
       <p class="para">
        Some directory server hosts will be configured to return no more than
        a preset number of entries. If this occurs, the server will indicate
        that it has only returned a partial results set. This also occurs if
        you use this parameter to limit the count of fetched entries.
       </p>
      </p></blockquote>


function_name: ldap_list
name: timelimit
type: int
initializer: -1
description:
<p class="para">
       Sets the number of seconds how long is spend on the search. Setting
       this to 0 means no limit.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        This parameter can NOT override server-side preset timelimit. You can
        set it lower though.
       </p>
      </p></blockquote>


function_name: ldap_list
name: deref
type: int
description:
<p class="simpara">
          <strong><code><a href="ldap.constants.html#constant.ldap-deref-always">LDAP_DEREF_ALWAYS</a></code></strong> - aliases should be dereferenced
          always.
         </p>


function_name: ldap_mod_add
name: entry
type: array
description:
<p class="para">
       An associative array listing the attirbute values to add. If an attribute was not existing yet it will be added. If an attribute is existing you can only add values to it if it supports multiple values.
      </p>


function_name: ldap_mod_replace
name: entry
type: array
description:
<p class="para">
       An associative array listing the attributes to replace. Sending an empty array as value will remove the attribute, while sending an attribute not existing yet on this entry will add it.
      </p>


function_name: ldap_modify_batch
name: modifications_info
type: array
description:
<p class="para">
           All current values of the attribute named by
           <code class="literal">attrib</code> are replaced with the values specified
           through <code class="literal">values</code>.
          </p>


function_name: ldap_parse_result
name: error_code
type: int
description:
<p class="para">
       A reference to a variable that will be set to the LDAP error code in
       the result, or <code class="literal">0</code> if no error occurred.
      </p>


function_name: ldap_parse_result
name: matched_dn
type: string
description:
<p class="para">
       A reference to a variable that will be set to a matched DN if one was
       recognised within the request, otherwise it will be set to <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: ldap_parse_result
name: error_message
type: string
description:
<p class="para">
       A reference to a variable that will be set to the LDAP error message in
       the result, or an empty string if no error occurred.
      </p>


function_name: ldap_parse_result
name: referrals
type: array
description:
<p class="para">
       A reference to a variable that will be set to an <span class="type">array</span> set
       to all of the referral strings in the result, or an empty array if no
       referrals were returned.
      </p>


function_name: ldap_parse_result
name: controls
type: array
description:
<p class="para">
       An <span class="type">array</span> of LDAP Controls which have been sent with the response.
      </p>


function_name: ldap_read
name: filter
type: string
description:
<p class="para">
       An empty filter is not allowed. If you want to retrieve absolutely all
       information for this entry, use a filter of
       <code class="literal">objectClass=*</code>. If you know which entry types are
       used on the directory server, you might use an appropriate filter such
       as <code class="literal">objectClass=inetOrgPerson</code>.
      </p>


function_name: ldap_rename
name: delete_old_rdn
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> the old RDN value(s) is removed, else the old RDN value(s)
       is retained as non-distinguished values of the entry.
      </p>


function_name: ldap_search
name: filter
type: string
description:
<p class="para">
       The search filter can be simple or advanced, using boolean operators in
       the format described in the LDAP documentation (see the <a href="https://wiki.mozilla.org/Mozilla_LDAP_SDK_Programmer%27s_Guide/Searching_the_Directory_With_LDAP_C_SDK" class="link external">&raquo;&nbsp;Netscape Directory SDK</a> or
       <a href="http://www.faqs.org/rfcs/rfc4515" class="link external">&raquo;&nbsp;RFC4515</a> for full
       information on filters).
      </p>


function_name: ldap_search
name: attributes
type: array
initializer: []
description:
<p class="para">
       An array of the required attributes, e.g. <code class="literal">array(&quot;mail&quot;, &quot;sn&quot;, &quot;cn&quot;)</code>.
       Note that the &quot;dn&quot; is always returned irrespective of which attributes
       types are requested.
      </p>
      <p class="para">
       Using this parameter is much more efficient than the default action
       (which is to return all attributes and their associated values).
       The use of this parameter should therefore be considered good
       practice.
      </p>


function_name: ldap_set_option
name: ldap
type: null
description:
<p class="para">
       Either an <span class="classname">LDAP\Connection</span> instance, returned by
       <span class="function">ldap_connect</span>, to set the option for that connection,
       or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to set the option globally.
      </p>


function_name: ldap_set_option
name: option
type: int
description:
<p class="para">
       The parameter <code class="parameter">option</code> can be one of:
       <table class="doctable informaltable">
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Type</th>
           <th>Available since</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-deref">LDAP_OPT_DEREF</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-sizelimit">LDAP_OPT_SIZELIMIT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-timelimit">LDAP_OPT_TIMELIMIT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-network-timeout">LDAP_OPT_NETWORK_TIMEOUT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-protocol-version">LDAP_OPT_PROTOCOL_VERSION</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-error-number">LDAP_OPT_ERROR_NUMBER</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-referrals">LDAP_OPT_REFERRALS</a></code></strong></td>
           <td><span class="type">bool</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-restart">LDAP_OPT_RESTART</a></code></strong></td>
           <td><span class="type">bool</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-host-name">LDAP_OPT_HOST_NAME</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-error-string">LDAP_OPT_ERROR_STRING</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-diagnostic-message">LDAP_OPT_DIAGNOSTIC_MESSAGE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-matched-dn">LDAP_OPT_MATCHED_DN</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-server-controls">LDAP_OPT_SERVER_CONTROLS</a></code></strong></td>
           <td><span class="type">array</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-client-controls">LDAP_OPT_CLIENT_CONTROLS</a></code></strong></td>
           <td><span class="type">array</span></td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-keepalive-idle">LDAP_OPT_X_KEEPALIVE_IDLE</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-keepalive-probes">LDAP_OPT_X_KEEPALIVE_PROBES</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-keepalive-interval">LDAP_OPT_X_KEEPALIVE_INTERVAL</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-cacertdir">LDAP_OPT_X_TLS_CACERTDIR</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-cacertfile">LDAP_OPT_X_TLS_CACERTFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-certfile">LDAP_OPT_X_TLS_CERTFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-cipher-suite">LDAP_OPT_X_TLS_CIPHER_SUITE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-crlcheck">LDAP_OPT_X_TLS_CRLCHECK</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-crlfile">LDAP_OPT_X_TLS_CRLFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-dhfile">LDAP_OPT_X_TLS_DHFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-keyfile">LDAP_OPT_X_TLS_KEYFILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-protocol-min">LDAP_OPT_X_TLS_PROTOCOL_MIN</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-random-file">LDAP_OPT_X_TLS_RANDOM_FILE</a></code></strong></td>
           <td><span class="type">string</span></td>
           <td>PHP 7.1.0</td>
          </tr>

          <tr>
           <td><strong><code><a href="ldap.constants.html#constant.ldap-opt-x-tls-require-cert">LDAP_OPT_X_TLS_REQUIRE_CERT</a></code></strong></td>
           <td><span class="type">int</span></td>
           <td>PHP 7.0.5</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <strong><code><a href="ldap.constants.html#constant.ldap-opt-server-controls">LDAP_OPT_SERVER_CONTROLS</a></code></strong> and 
       <strong><code><a href="ldap.constants.html#constant.ldap-opt-client-controls">LDAP_OPT_CLIENT_CONTROLS</a></code></strong> require a list of
       controls, this means that the value must be an array of controls. A
       control consists of an <em>oid</em> identifying the control,
       an optional <em>value</em>, and an optional flag for
       <em>criticality</em>. In PHP a control is given by an
       array containing an element with the key <em>oid</em>
       and string value, and two optional elements. The optional
       elements are key <em>value</em> with string value
       and key <em>iscritical</em> with boolean value.
       <em>iscritical</em> defaults to <em><strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong></em>
       if not supplied. See <a href="http://www.openldap.org/devel/cvsweb.cgi/~checkout~/doc/drafts/draft-ietf-ldapext-ldap-c-api-xx.txt" class="link external">&raquo;&nbsp;draft-ietf-ldapext-ldap-c-api-xx.txt</a>
       for details. See also the second example below.
      </p>


function_name: ldap_set_option
name: value
type: bool
description:
<p class="para">
       The new value for the specified <code class="parameter">option</code>.
      </p>


function_name: ldap_sort
name: result
type: resource
description:
<p class="para">
       An search result identifier, returned by
       <span class="function">ldap_search</span>.
      </p>


function_name: Memcache.add
name: var
type: mixed
description:
<p class="para">
       The variable to store. Strings and integers are stored as is, other
       types are stored serialized.
      </p>


function_name: Memcache.add
name: flag
type: int
description:
<p class="para">
       Use <strong><code><a href="memcache.constants.html#constant.memcache-compressed">MEMCACHE_COMPRESSED</a></code></strong> to store the item
       compressed (uses zlib).
      </p>


function_name: Memcache.add
name: expire
type: int
description:
<p class="para">
       Expiration time of the item. If it&#039;s equal to zero, the item will never
       expire. You can also use Unix timestamp or a number of seconds starting
       from current time, but in the latter case the number of seconds may not
       exceed 2592000 (30 days).
      </p>


function_name: Memcache.addServer
name: host
type: string
description:
<p class="para">
       Point to the host where memcached is listening for connections. This parameter
       may also specify other transports like <code class="literal">unix:///path/to/memcached.sock</code>
       to use UNIX domain sockets, in this case <code class="parameter">port</code> must also
       be set to <code class="literal">0</code>.
      </p>


function_name: Memcache.addServer
name: port
type: int
initializer: 11211
description:
<p class="para">
       Point to the port where memcached is listening for connections.
       Set this
       parameter to <code class="literal">0</code> when using UNIX domain sockets.
      </p>
      <p class="para">
       Please note: <code class="parameter">port</code> defaults to
       <a href="memcache.ini.html#ini.memcache.default-port" class="link">memcache.default_port</a>
       if not specified. For this reason it is wise to specify the port
       explicitly in this method call.
      </p>


function_name: Memcache.addServer
name: persistent
type: bool
description:
<p class="para">
       Controls the use of a persistent connection. Default to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
      </p>


function_name: Memcache.addServer
name: weight
type: int
description:
<p class="para">
       Number of buckets to create for this server which in turn control its
       probability of it being selected. The probability is relative to the
       total weight of all servers.
      </p>


function_name: Memcache.addServer
name: timeout
type: int
description:
<p class="para">
       Value in seconds which will be used for connecting to the daemon. Think
       twice before changing the default value of 1 second - you can lose all
       the advantages of caching if your connection is too slow.
      </p>


function_name: Memcache.addServer
name: retry_interval
type: int
description:
<p class="para">
       Controls how often a failed server will be retried, the default value
       is 15 seconds. Setting this parameter to -1 disables automatic retry. 
       Neither this nor the <code class="parameter">persistent</code> parameter has any 
       effect when the extension is loaded dynamically via <span class="function">dl</span>.
      </p>
      <p class="para">
       Each failed connection struct has its own timeout and before it has expired 
       the struct will be skipped when selecting backends to serve a request. Once 
       expired the connection will be successfully reconnected or marked as failed 
       for another <code class="parameter">retry_interval</code> seconds. The typical 
       effect is that each web server child will retry the connection about every
       <code class="parameter">retry_interval</code> seconds when serving a page.
      </p>


function_name: Memcache.addServer
name: status
type: bool
description:
<p class="para">
       Controls if the server should be flagged as online. Setting this parameter
       to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> and <code class="parameter">retry_interval</code> to -1 allows a failed 
       server to be kept in the pool so as not to affect the key distribution 
       algorithm. Requests for this server will then failover or fail immediately 
       depending on the <code class="parameter">memcache.allow_failover</code> setting.
       Default to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, meaning the server should be considered online.
      </p>


function_name: Memcache.addServer
name: failure_callback
type: callable
description:
<p class="para">
       Allows the user to specify a callback function to run upon encountering an 
       error. The callback is run before failover is attempted. The function takes 
       two parameters, the hostname and port of the failed server.
      </p>


function_name: Memcache.connect
name: port
type: int
description:
<p class="para">
       Point to the port where memcached is listening for connections. Set this
       parameter to <code class="literal">0</code> when using UNIX domain sockets.
      </p>
      <p class="para">
        Please note: <code class="parameter">port</code> defaults to
        <a href="memcache.ini.html#ini.memcache.default-port" class="link">memcache.default_port</a>
        if not specified. For this reason it is wise to specify the port
        explicitly in this method call.
      </p>


function_name: Memcache.delete
name: timeout
type: int
description:
<p class="para">
       This deprecated parameter is not supported, and defaults to <code class="literal">0</code> seconds.
       Do not use this parameter.
      </p>


function_name: Memcache.get
name: flags
type: array
description:
<p class="para">
       If present, flags fetched along with the values will be written to this parameter. These
       flags are the same as the ones given to for example <span class="function">Memcache::set</span>.
       The lowest byte of the int is reserved for pecl/memcache internal usage (e.g. to indicate
       compression and serialization status).
      </p>


function_name: Memcache.getExtendedStats
name: type
type: string
description:
<p class="para">
       The type of statistics to fetch. Valid values are {reset, 
       malloc, maps, cachedump, slabs, items, sizes}. According to
       the memcached protocol spec these additional arguments &quot;are 
       subject to change for the convenience of memcache developers&quot;.
      </p>


function_name: Memcache.getExtendedStats
name: slabid
type: int
description:
<p class="para">
       Used in conjunction with <code class="parameter">type</code> set to 
       cachedump to identify the slab to dump from. The cachedump
       command ties up the server and is strictly to be used for 
       debugging purposes.
      </p>


function_name: Memcache.getExtendedStats
name: limit
type: int
initializer: 100
description:
<p class="para">
       Used in conjunction with <code class="parameter">type</code> set to 
       cachedump to limit the number of entries to dump.
      </p>


function_name: Memcache.pconnect
name: port
type: int
description:
<p class="para">
       Point to the port where memcached is listening for connections. Set this
       parameter to <code class="literal">0</code> when using UNIX domain sockets.
      </p>


function_name: Memcache.setCompressThreshold
name: threshold
type: int
description:
<p class="para">
       Controls the minimum value length before attempting to compress automatically. 
      </p>


function_name: Memcache.setServerParams
name: retry_interval
type: int
description:
<p class="para">
       Controls how often a failed server will be retried, the default value
       is 15 seconds. Setting this parameter to -1 disables automatic retry. 
       Neither this nor the <code class="parameter">persistent</code> parameter has any 
       effect when the extension is loaded dynamically via <span class="function">dl</span>.
      </p>


function_name: memcache_debug
name: on_off
type: bool
description:
<p class="para">
       Turns debug output on if equals to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
       Turns debug output off if equals to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
      </p>


function_name: Memcached.add
name: expiration
type: int
description:
<p class="para">
       The expiration time, defaults to 0. See <a href="memcached.expiration.html" class="link">Expiration Times</a> for more info.
      </p>


function_name: Memcached.addByKey
name: server_key
type: string
description:
<p class="para">
       The key identifying the server to store the value on or retrieve it from. Instead of hashing on the actual key for the item, we hash on the server key when deciding which memcached server to talk to. This allows related items to be grouped together on a single server for efficiency with multi operations.
      </p>


function_name: Memcached.addServer
name: host
type: string
description:
<p class="para">
       The hostname of the memcache server. If the hostname is invalid,
       data-related operations will set 
       <strong><code><a href="memcached.constants.html#memcached.constants.res-host-lookup-failure">Memcached::RES_HOST_LOOKUP_FAILURE</a></code></strong> result code. As
       of version 2.0.0b1, this parameter may also specify the path of a unix
       socket filepath ex. <code class="literal">/path/to/memcached.sock</code>
       to use UNIX domain sockets, in this case <code class="parameter">port</code>
       must also be set to <code class="literal">0</code>.
      </p>


function_name: Memcached.addServer
name: port
type: int
description:
<p class="para">
       The port on which memcache is running. Usually, this is
       <code class="literal">11211</code>. As of version 2.0.0b1, set this parameter to <code class="literal">0</code> when 
       using UNIX domain sockets.
      </p>


function_name: Memcached.addServer
name: weight
type: int
description:
<p class="para">
       The weight of the server relative to the total weight of all the
       servers in the pool. This controls the probability of the server being
       selected for operations. This is used only with consistent distribution
       option and usually corresponds to the amount of memory available to
       memcache on that server.
      </p>


function_name: Memcached.cas
name: cas_token
type: float
description:
<p class="para">
       Unique value associated with the existing item. Generated by memcache.
      </p>


function_name: Memcached.__construct
name: persistent_id
type: null
description:
<p class="para">
       By default the Memcached instances are destroyed at the end of the
       request. To create an instance that persists between requests, use
       <code class="parameter">persistent_id</code> to specify a unique ID for the
       instance. All instances created with the same
       <code class="parameter">persistent_id</code> will share the same connection.
      </p>


function_name: Memcached.delete
name: time
type: int
description:
<p class="para">
       The amount of time the server will wait to delete the item.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">
       As of memcached 1.3.0 (released 2009) this feature is no longer
       supported. Passing a non-zero <code class="parameter">time</code> will cause
       the deletion to fail.  <span class="methodname">Memcached::getResultCode</span>
       will return <strong><code>MEMCACHED_INVALID_ARGUMENTS</code></strong>.
      </span></p></blockquote>


function_name: Memcached.deleteMulti
name: time
type: int
description:
<p class="para">
       The amount of time the server will wait to delete the items.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">
       As of memcached 1.3.0 (released 2009) this feature is no longer
       supported. Passing a non-zero <code class="parameter">time</code> will cause
       the deletion to fail.  <span class="methodname">Memcached::getResultCode</span>
       will return <strong><code>MEMCACHED_INVALID_ARGUMENTS</code></strong>.
      </span></p></blockquote>


function_name: Memcached.get
name: cache_cb
type: null
description:
<p class="para">
       Read-through caching callback or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: Memcached.get
name: get_flags
type: int
description:
<p class="para">
       Flags to control the returned result. When <strong><code><a href="memcached.constants.html#memcached.constants.get-extended">Memcached::GET_EXTENDED</a></code></strong>
       is given, the function will also return the CAS token.
      </p>


function_name: Memcached.getByKey
name: cache_cb
type: null
description:
<p class="para">
       Read-through caching callback or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>
      </p>


function_name: Memcached.getByKey
name: get_flags
type: int
description:
<p class="para">
       Flags to control the returned result. When value of <strong><code><a href="memcached.constants.html#memcached.constants.get-extended">Memcached::GET_EXTENDED</a></code></strong>
       is given will return the CAS token.
      </p>


function_name: Memcached.getDelayed
name: value_cb
type: null
description:
<p class="para">
       The result callback or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: Memcached.getOption
name: option
type: int
description:
<p class="para">
       One of the <code class="literal">Memcached::OPT_*</code> constants.
      </p>


function_name: Memcached.setOption
name: option
type: int
description:
<p class="para">
       One of the <code class="literal">Memcached::OPT_*</code> constant.
       See <a href="memcached.constants.html" class="link">Memcached Constants</a> for more information.
      </p>


function_name: Memcached.setOption
name: value
type: mixed
description:
<p class="para">
       The value to be set.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The options listed below require values specified via constants.
        <ul class="simplelist">
         <li><code class="literal">Memcached::OPT_HASH</code> requires <code class="literal">Memcached::HASH_*</code> values.</li>
         <li><code class="literal">Memcached::OPT_DISTRIBUTION</code> requires <code class="literal">Memcached::DISTRIBUTION_*</code> values.</li>
        </ul>
       </p>
      </p></blockquote>


function_name: Memcached.setOptions
name: options
type: array
description:
<p class="para">
      An associative array of options where the key is the option to set and
      the value is the new value for the option.
     </p>


function_name: mqseries_conn
name: qManagerName
type: string
description:
<p class="para">Name of queue manager.</p>
      <p class="para">Name of the queue manager the application wishes to connect.</p>


function_name: mqseries_get
name: hConn
type: resource
description:
<p class="para">Connection handle.</p>
      <p class="para">This handle represents the connection to the queue manager.</p>


function_name: mqseries_get
name: hObj
type: resource
description:
<p class="para">Object handle.</p>
      <p class="para">This handle represents the object to be used.</p>


function_name: mqseries_put1
name: objDesc
type: resource
description:
<p class="para">Object descriptor. (MQOD)</p>
      <p class="para">
       This is a structure which identifies the queue to which the message is
       added.
      </p>


function_name: checkdnsrr
name: hostname
type: string
description:
<p class="para">
       <code class="parameter">hostname</code> may either be the IP address in
       dotted-quad notation or the host name.
      </p>


function_name: checkdnsrr
name: type
type: string
initializer: "MX"
description:
<p class="para">
       <code class="parameter">type</code> may be any one of: A, MX, NS, SOA,
       PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT or ANY.
      </p>


function_name: dns_get_record
name: hostname
type: string
description:
<p class="para">
       <code class="parameter">hostname</code> should be a valid DNS hostname such
       as &quot;<code class="literal">www.example.com</code>&quot;. Reverse lookups can be generated
       using <code class="literal">in-addr.arpa</code> notation, but
       <span class="function">gethostbyaddr</span> is more suitable for
       the majority of reverse lookups.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Per DNS standards, email addresses are given in <code class="literal">user.host</code> format (for
        example: <code class="literal">hostmaster.example.com</code> as opposed to <code class="literal">hostmaster@example.com</code>),
        be sure to check this value and modify if necessary before using it
        with a functions such as <span class="function">mail</span>.
       </p>
      </p></blockquote>


function_name: dns_get_record
name: type
type: int
description:
<p class="para">
       By default, <span class="function">dns_get_record</span> will search for any
       resource records associated with <code class="parameter">hostname</code>. 
       To limit the query, specify the optional <code class="parameter">type</code>
       parameter. May be any one of the following:
       <strong><code><a href="network.constants.html#constant.dns-a">DNS_A</a></code></strong>, <strong><code><a href="network.constants.html#constant.dns-cname">DNS_CNAME</a></code></strong>,
       <strong><code><a href="network.constants.html#constant.dns-hinfo">DNS_HINFO</a></code></strong>, <strong><code><a href="network.constants.html#constant.dns-caa">DNS_CAA</a></code></strong>,
       <strong><code><a href="network.constants.html#constant.dns-mx">DNS_MX</a></code></strong>, <strong><code><a href="network.constants.html#constant.dns-ns">DNS_NS</a></code></strong>,
       <strong><code><a href="network.constants.html#constant.dns-ptr">DNS_PTR</a></code></strong>, <strong><code><a href="network.constants.html#constant.dns-soa">DNS_SOA</a></code></strong>,
       <strong><code><a href="network.constants.html#constant.dns-txt">DNS_TXT</a></code></strong>, <strong><code><a href="network.constants.html#constant.dns-aaaa">DNS_AAAA</a></code></strong>,
       <strong><code>DNS_SRV</code></strong>, <strong><code>DNS_NAPTR</code></strong>,
       <strong><code>DNS_A6</code></strong>, <strong><code><a href="network.constants.html#constant.dns-all">DNS_ALL</a></code></strong>
       or <strong><code><a href="network.constants.html#constant.dns-any">DNS_ANY</a></code></strong>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Because of eccentricities in the performance of libresolv
        between platforms, <strong><code><a href="network.constants.html#constant.dns-any">DNS_ANY</a></code></strong> will not
        always return every record, the slower <strong><code><a href="network.constants.html#constant.dns-all">DNS_ALL</a></code></strong>
        will collect all records more reliably.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Windows: <strong><code><a href="network.constants.html#constant.dns-caa">DNS_CAA</a></code></strong> is not supported.
        Support for <strong><code>DNS_A6</code></strong> is not implemented.
       </p>
      </p></blockquote>


function_name: dns_get_record
name: authoritative_name_servers
type: array
description:
<p class="para">
       Passed by reference and, if given, will be populated with Resource
       Records for the <em>Authoritative Name Servers</em>.
      </p>


function_name: dns_get_record
name: additional_records
type: array
description:
<p class="para">
       Passed by reference and, if given, will be populated with any
       <em>Additional Records</em>.
      </p>


function_name: dns_get_record
name: raw
type: bool
description:
<p class="para">
       The <code class="parameter">type</code> will be interpreted as a raw DNS type ID
       (the <code class="literal">DNS_*</code> constants cannot be used).
       The return value will contain a <code class="literal">data</code> key, which needs
       to be manually parsed.
      </p>


function_name: fsockopen
name: hostname
type: string
description:
<p class="para">
       If OpenSSL support <a href="openssl.installation.html" class="link">is
       installed</a>, you may prefix the <code class="parameter">hostname</code>
       with either <code class="literal">ssl://</code> or <code class="literal">tls://</code> to
       use an SSL or TLS client connection over TCP/IP to connect to the
       remote host.
      </p>


function_name: fsockopen
name: port
type: int
initializer: -1
description:
<p class="para">
       The port number. This can be omitted and skipped with
       <code class="literal">-1</code> for transports that do not use ports, such as
       <code class="literal">unix://</code>.
      </p>


function_name: fsockopen
name: error_code
type: int
description:
<p class="para">
       If provided, holds the system level error number that occurred in the
       system-level <code class="literal">connect()</code> call.
      </p>
      <p class="para">
       If the value returned in <code class="parameter">error_code</code> is
       <code class="literal">0</code> and the function returned <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, it is an
       indication that the error occurred before the 
       <code class="literal">connect()</code> call. This is most likely due to a
       problem initializing the socket.
      </p>


function_name: fsockopen
name: timeout
type: null
description:
<p class="para">
       The connection timeout, in seconds. When <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the
       <a href="filesystem.configuration.html#ini.default-socket-timeout" class="link">default_socket_timeout</a> <var class="filename">php.ini</var> setting is used.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If you need to set a timeout for reading/writing data over the
        socket, use <span class="function">stream_set_timeout</span>, as the
        <code class="parameter">timeout</code> parameter to
        <span class="function">fsockopen</span> only applies while connecting the
        socket.
       </p>
      </p></blockquote>


function_name: getmxrr
name: hosts
type: array
description:
<p class="para">
       A list of the MX records found is placed into the array
       <code class="parameter">hosts</code>. 
      </p>


function_name: getmxrr
name: weights
type: array
description:
<p class="para">
       If the <code class="parameter">weights</code> array is given, it will be filled
       with the weight information gathered.
      </p>


function_name: getservbyname
name: protocol
type: string
description:
<p class="para">
       <code class="parameter">protocol</code> is either <code class="literal">&quot;tcp&quot;</code>
       or <code class="literal">&quot;udp&quot;</code> (in lowercase).
      </p>


function_name: header_register_callback
name: callback
type: callable
description:
<p class="para">
      Function called just before the headers are sent. It gets no parameters
      and the return value is ignored.
     </p>


function_name: header_remove
name: name
type: null
description:
<p class="para">
       The header name to be removed. When <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, all previously set headers are removed.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        This parameter is case-insensitive.
       </span>
      </p></blockquote>


function_name: header
name: header
type: string
description:
<p class="para">
       The header string.
      </p>
      <p class="para">
       There are two special-case header calls.  The first is a header
       that starts with the string &quot;<code class="literal">HTTP/</code>&quot; (case is not
       significant), which will be used to figure out the HTTP status
       code to send. For example, if you have configured Apache to
       use a PHP script to handle requests for missing files (using
       the <code class="literal">ErrorDocument</code> directive), you may want to
       make sure that your script generates the proper status code.
      </p>
      <p class="para">
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// This example illustrates the "HTTP/" special case<br />// Better alternatives in typical use cases include:<br />// 1. header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");<br />//    (to override http status messages for clients that are still using HTTP/1.0)<br />// 2. http_response_code(404); (to use the default message)<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"HTTP/1.1 404 Not Found"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>
      <p class="para">
       The second special case is the &quot;Location:&quot; header.  Not only does
       it send this header back to the browser, but it also returns a
       <code class="literal">REDIRECT</code> (302) status code to the browser
       unless the <code class="literal">201</code> or
       a <code class="literal">3xx</code> status code has already been set.
      </p>
      <p class="para">
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Location: http://www.example.com/"</span><span style="color: #007700">); </span><span style="color: #FF8000">/* Redirect browser */<br /><br />/* Make sure that code below does not get executed when we redirect. */<br /></span><span style="color: #007700">exit;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: header
name: replace
type: bool
description:
<p class="para">
       The optional <code class="parameter">replace</code> parameter indicates
       whether the header should replace a previous similar header, or
       add a second header of the same type.  By default it will replace,
       but if you pass in <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> as the second argument you can force
       multiple headers of the same type.  For example:
      </p>
      <p class="para">
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />header</span><span style="color: #007700">(</span><span style="color: #DD0000">'WWW-Authenticate: Negotiate'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'WWW-Authenticate: NTLM'</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: header
name: response_code
type: int
description:
<p class="para">
       Forces the HTTP response code to the specified value. Note that this
       parameter only has an effect if the <code class="parameter">header</code> is
       not empty.
      </p>


function_name: headers_sent
name: filename
type: string
description:
<p class="para">
       If the optional <code class="parameter">filename</code> and
       <code class="parameter">line</code> parameters are set, 
       <span class="function">headers_sent</span> will put the PHP source file name
       and line number where output started in the <code class="parameter">filename</code>
       and <code class="parameter">line</code> variables.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If the output has started before executing the PHP source file (for example due to a startup error),
        the <code class="parameter">filename</code> parameter will be set to an empty string.
       </p>
      </p></blockquote>


function_name: http_response_code
name: response_code
type: int
description:
<p class="para">
       The optional <code class="parameter">response_code</code> will set the response code.
      </p>


function_name: openlog
name: prefix
type: string
description:
<p class="para">
       The string <code class="parameter">prefix</code> is added to each message. 
      </p>


function_name: openlog
name: flags
type: int
description:
<p class="para">
       The <code class="parameter">flags</code> argument is used to indicate
       what logging options will be used when generating a log message.
       <table class="doctable table">
        <caption><strong><span class="function">openlog</span> Options</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-cons">LOG_CONS</a></code></strong></td>
           <td>
            if there is an error while sending data to the system logger,
            write directly to the system console
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-ndelay">LOG_NDELAY</a></code></strong></td>
           <td>
            open the connection to the logger immediately
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-odelay">LOG_ODELAY</a></code></strong></td>
           <td>
            (default) delay opening the connection until the first
            message is logged
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-perror">LOG_PERROR</a></code></strong></td>
           <td>print log message also to standard error</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-pid">LOG_PID</a></code></strong></td>
           <td>include PID with each message</td>
          </tr>

         </tbody>
        
       </table>

       You can use one or more of these options. When using multiple options
       you need to <code class="literal">OR</code> them, i.e. to open the connection
       immediately, write to the console and include the PID in each message,
       you will use: <code class="literal">LOG_CONS | LOG_NDELAY | LOG_PID</code>
      </p>


function_name: openlog
name: facility
type: int
description:
<p class="para">
       The <code class="parameter">facility</code> argument is used to specify what
       type of program is logging the message. This allows you to specify
       (in your machine&#039;s syslog configuration) how messages coming from
       different facilities will be handled.
       <table class="doctable table">
        <caption><strong><span class="function">openlog</span> Facilities</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-auth">LOG_AUTH</a></code></strong></td>
           <td>
            security/authorization messages (use 
            <strong><code><a href="network.constants.html#constant.log-authpriv">LOG_AUTHPRIV</a></code></strong> instead
            in systems where that constant is defined)
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-authpriv">LOG_AUTHPRIV</a></code></strong></td>
           <td>security/authorization messages (private)</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-cron">LOG_CRON</a></code></strong></td>
           <td>clock daemon (cron and at)</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-daemon">LOG_DAEMON</a></code></strong></td>
           <td>other system daemons</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-kern">LOG_KERN</a></code></strong></td>
           <td>kernel messages</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-local0">LOG_LOCAL0</a></code></strong> ... <strong><code><a href="network.constants.html#constant.log-local7">LOG_LOCAL7</a></code></strong></td>
           <td>reserved for local use, these are not available in Windows</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-lpr">LOG_LPR</a></code></strong></td>
           <td>line printer subsystem</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-mail">LOG_MAIL</a></code></strong></td>
           <td>mail subsystem</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-news">LOG_NEWS</a></code></strong></td>
           <td>USENET news subsystem</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-syslog">LOG_SYSLOG</a></code></strong></td>
           <td>messages generated internally by syslogd</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-user">LOG_USER</a></code></strong></td>
           <td>generic user-level messages</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-uucp">LOG_UUCP</a></code></strong></td>
           <td>UUCP subsystem</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <strong><code><a href="network.constants.html#constant.log-user">LOG_USER</a></code></strong> is the only valid log type under Windows
        operating systems
       </p>
      </p></blockquote>


function_name: setcookie
name: value
type: string
initializer: ""
description:
<p class="para">
       The value of the cookie.  This value is stored on the clients computer;
       do not store sensitive information.  Assuming the
       <code class="parameter">name</code> is <code class="literal">&#039;cookiename&#039;</code>, this
       value is retrieved through <var class="varname">$_COOKIE[&#039;cookiename&#039;]</var>
      </p>


function_name: setcookie
name: expires_or_options
type: int
description:
<p class="para">
       The time the cookie expires.  This is a Unix timestamp so is
       in number of seconds since the epoch.
       One way to set this is by adding the number of seconds before the cookie
       should expire to the result of calling <span class="function">time</span>.
       For instance, <code class="literal">time()+60*60*24*30</code> will set the cookie to
       expire in 30 days.
       Another option is to use the <span class="function">mktime</span> function.
       If set to <code class="literal">0</code>, or omitted, the cookie will expire at
       the end of the session (when the browser closes).
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         You may notice the <code class="parameter">expires_or_options</code> parameter takes on a
         Unix timestamp, as opposed to the date format <code class="literal">Wdy, DD-Mon-YYYY
         HH:MM:SS GMT</code>, this is because PHP does this conversion
         internally.
        </p>
       </p></blockquote>
      </p>


function_name: setcookie
name: path
type: string
initializer: ""
description:
<p class="para">
       The path on the server in which the cookie will be available on.
       If set to <code class="literal">&#039;/&#039;</code>, the cookie will be available
       within the entire <code class="parameter">domain</code>.  If set to
       <code class="literal">&#039;/foo/&#039;</code>, the cookie will only be available
       within the <code class="literal">/foo/</code> directory and all
       sub-directories such as <code class="literal">/foo/bar/</code> of
       <code class="parameter">domain</code>.  The default value is the
       current directory that the cookie is being set in.
      </p>


function_name: setcookie
name: domain
type: string
initializer: ""
description:
<p class="para">
       The (sub)domain that the cookie is available to. Setting this to a
       subdomain (such as <code class="literal">&#039;www.example.com&#039;</code>) will make the
       cookie available to that subdomain and all other sub-domains of it (i.e.
       w2.www.example.com). To make the cookie available to the whole domain
       (including all subdomains of it), simply set the value to the domain
       name (<code class="literal">&#039;example.com&#039;</code>, in this case).
      </p>
      <p class="para">
       Older browsers still implementing the deprecated
       <a href="http://www.faqs.org/rfcs/rfc2109" class="link external">&raquo;&nbsp;RFC 2109</a> may require a leading
       <code class="literal">.</code> to match all subdomains.
      </p>


function_name: setcookie
name: secure
type: bool
description:
<p class="para">
       Indicates that the cookie should only be transmitted over a
       secure HTTPS connection from the client. When set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the
       cookie will only be set if a secure connection exists.
       On the server-side, it&#039;s on the programmer to send this
       kind of cookie only on secure connection (e.g. with respect to
       <var class="varname">$_SERVER[&quot;HTTPS&quot;]</var>).
      </p>


function_name: setcookie
name: httponly
type: bool
description:
<p class="para">
       When <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> the cookie will be made accessible only through the HTTP
       protocol. This means that the cookie won&#039;t be accessible by
       scripting languages, such as JavaScript. It has been suggested that
       this setting can effectively help to reduce identity theft through
       XSS attacks (although it is not supported by all browsers), but that
       claim is often disputed.
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      </p>


function_name: setcookie
name: options
type: array
initializer: []
description:
<p class="para">
       An associative <span class="type">array</span> which may have any of the keys
       <code class="literal">expires</code>, <code class="literal">path</code>, <code class="literal">domain</code>,
       <code class="literal">secure</code>, <code class="literal">httponly</code> and <code class="literal">samesite</code>.
       If any other key is present an error of level <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong>
       is generated. The values have the same meaning as described for the 
       parameters with the same name. The value of the <code class="literal">samesite</code>
       element should be either <code class="literal">None</code>, <code class="literal">Lax</code>
       or <code class="literal">Strict</code>.
       If any of the allowed options are not given, their default values are the
       same as the default values of the explicit parameters. If the
       <code class="literal">samesite</code> element is omitted, no SameSite cookie
       attribute is set.
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         To set a cookie that includes attributes that aren&#039;t among the keys listed,
         use <span class="function">header</span>.
        </p>
       </p></blockquote>
      </p>


function_name: syslog
name: priority
type: int
description:
<p class="para">
       <code class="parameter">priority</code> is a combination of the facility and
       the level. Possible values are:
       <table class="doctable table">
        <caption><strong><span class="function">syslog</span> Priorities (in descending order)</strong></caption>
        
         <thead>
          <tr>
           <th>Constant</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-emerg">LOG_EMERG</a></code></strong></td>
           <td>system is unusable</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-alert">LOG_ALERT</a></code></strong></td>
           <td>action must be taken immediately</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-crit">LOG_CRIT</a></code></strong></td>
           <td>critical conditions</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-err">LOG_ERR</a></code></strong></td>
           <td>error conditions</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-warning">LOG_WARNING</a></code></strong></td>
           <td>warning conditions</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-notice">LOG_NOTICE</a></code></strong></td>
           <td>normal, but significant, condition</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-info">LOG_INFO</a></code></strong></td>
           <td>informational message</td>
          </tr>

          <tr>
           <td><strong><code><a href="network.constants.html#constant.log-debug">LOG_DEBUG</a></code></strong></td>
           <td>debug-level message</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: rrd_create
name: options
type: array
description:
<p class="para">
      Options for rrd create - list of strings. See man page of rrd create
      for whole list of options.
     </p>


function_name: rrd_first
name: raaindex
type: int
description:
<p class="para">
      The index number of the RRA that is to be examined. Default value is 0.
     </p>


function_name: rrd_graph
name: filename
type: string
description:
<p class="para">
      The filename to output the graph to. This will generally end in either
      <code class="literal">.png</code>, <code class="literal">.svg</code> or
      <code class="literal">.eps</code>, depending on the format you want to output.
     </p>


function_name: rrd_graph
name: options
type: array
description:
<p class="para">
      Options for generating image. See man page of rrd graph for all
      possible options. All options (data definitions, variable definitions, etc.)
      are allowed.
     </p>


function_name: rrd_tune
name: options
type: array
description:
<p class="para">
      Options with RRD database file properties which will be changed. See
      rrd tune man page for details.
     </p>


function_name: rrd_update
name: options
type: array
description:
<p class="para">
      Options for updating the RRD database. This is list of strings. See man page of rrd update
      for whole list of options.
     </p>


function_name: RRDCreator.addArchive
name: description
type: string
description:
<p class="para">
      Definition of archive - RRA. This has same format as RRA definition in
      rrd create command. See man page of rrd create for more details.
     </p>


function_name: RRDCreator.addDataSource
name: description
type: string
description:
<p class="para">
      Definition of data source - DS. This has same format as DS definition in
      rrd create command. See man page of rrd create for more details.
     </p>


function_name: RRDCreator.__construct
name: startTime
type: string
description:
<p class="para">
      Time for the first value in RRD database. Parameter supports all formats
      which are supported by rrd create call.
     </p>


function_name: RRDCreator.__construct
name: step
type: int
description:
<p class="para">
      Base interval in seconds with which data will be fed into the RRD database.
     </p>


function_name: RRDGraph.setOptions
name: options
type: array
description:
<p class="para">
      List of options for the image generation from the RRD database file. It can
      be list of strings or list of strings with keys for better readability. Read
      the rrd graph man pages for list of available options.
     </p>


function_name: RRDUpdater.update
name: time
type: string
initializer: time()
description:
<p class="para">
       Time value for updating the RRD with a particular data. Default value
       is current time.
      </p>


function_name: snmp_set_enum_print
name: enable
type: bool
description:
<p class="para">
      As the value is interpreted as boolean by the Net-SNMP library, it can only be &quot;0&quot; or &quot;1&quot;.
     </p>


function_name: snmp_set_oid_output_format
name: format
type: int
description:
<table class="doctable table">
       <caption><strong>OID .1.3.6.1.2.1.1.3.0 representation for various <code class="parameter">format</code> values</strong></caption>
        
         <tbody class="tbody">
          <tr><td><strong><code><a href="snmp.constants.html#constant.snmp-oid-output-full">SNMP_OID_OUTPUT_FULL</a></code></strong></td><td>.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance</td></tr>

          <tr><td><strong><code><a href="snmp.constants.html#constant.snmp-oid-output-numeric">SNMP_OID_OUTPUT_NUMERIC</a></code></strong></td><td>.1.3.6.1.2.1.1.3.0</td> </tr>

          <tr><td><strong><code><a href="snmp.constants.html#constant.snmp-oid-output-module">SNMP_OID_OUTPUT_MODULE</a></code></strong></td><td>DISMAN-EVENT-MIB::sysUpTimeInstance</td></tr>

          <tr><td><strong><code><a href="snmp.constants.html#constant.snmp-oid-output-suffix">SNMP_OID_OUTPUT_SUFFIX</a></code></strong></td><td>sysUpTimeInstance</td></tr>

          <tr><td><strong><code><a href="snmp.constants.html#constant.snmp-oid-output-ucd">SNMP_OID_OUTPUT_UCD</a></code></strong></td><td>system.sysUpTime.sysUpTimeInstance</td></tr>

          <tr><td><strong><code><a href="snmp.constants.html#constant.snmp-oid-output-none">SNMP_OID_OUTPUT_NONE</a></code></strong></td><td>Undefined</td></tr>

         </tbody>
        
       </table>


function_name: snmp_set_valueretrieval
name: method
type: int
description:
<table class="doctable table">
       <caption><strong>types</strong></caption>
       
        <tbody class="tbody">
         <tr>
          <td>SNMP_VALUE_LIBRARY</td>
          <td>The return values will be as returned by the Net-SNMP library.</td>
         </tr>

         <tr>
          <td>SNMP_VALUE_PLAIN</td>
          <td>The return values will be the plain value without the SNMP type information.</td>
         </tr>

         <tr>
          <td>SNMP_VALUE_OBJECT</td>
          <td>
           The return values will be objects with the properties <code class="literal">value</code> and <code class="literal">type</code>, where the latter
           is one of the <strong><code><a href="snmp.constants.html#constant.snmp-octet-str">SNMP_OCTET_STR</a></code></strong>, <strong><code><a href="snmp.constants.html#constant.snmp-counter">SNMP_COUNTER</a></code></strong> etc. constants. The
           way <code class="literal">value</code> is returned is based on which one of constants
           <strong><code><a href="snmp.constants.html#constant.snmp-value-library">SNMP_VALUE_LIBRARY</a></code></strong>, <strong><code><a href="snmp.constants.html#constant.snmp-value-plain">SNMP_VALUE_PLAIN</a></code></strong> is set.
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: snmp2_getnext
name: hostname
type: string
description:
<p class="para">
      The hostname of the <acronym class="acronym">SNMP</acronym> agent (server).
     </p>


function_name: snmp2_getnext
name: object_id
type: string
description:
<p class="para">
      The <acronym class="acronym">SNMP</acronym> object id which precedes the wanted one.
     </p>


function_name: snmp2_set
name: type
type: string
description:
<p class="simpara">
   Using type &quot;x&quot; and a hex number but without(!) the usual &quot;0x&quot; prefix.
  </p>


function_name: snmp2_walk
name: object_id
type: string
description:
<p class="para">
      If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, <code class="parameter">object_id</code> is taken as the root of
      the <acronym class="acronym">SNMP</acronym> objects tree and all objects under that tree are returned as
      an array.
     </p>
     <p class="para">
      If <code class="parameter">object_id</code> is specified, all the <acronym class="acronym">SNMP</acronym> objects
      below that <code class="parameter">object_id</code> are returned.
     </p>


function_name: snmp3_get
name: auth_protocol
type: string
description:
<p class="para">
      the authentication protocol (<code class="literal">&quot;MD5&quot;</code>, <code class="literal">&quot;SHA&quot;</code>,
      <code class="literal">&quot;SHA256&quot;</code>, or <code class="literal">&quot;SHA512&quot;</code>)
     </p>


function_name: snmp3_getnext
name: hostname
type: string
description:
<p class="para">
      The hostname of the
      <acronym class="acronym">SNMP</acronym> agent (server).
     </p>


function_name: snmp3_walk
name: object_id
type: string
description:
<p class="para">
      If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, <code class="parameter">object_id</code> is taken as the root of
      the <acronym class="acronym">SNMP</acronym> objects tree and all objects under that tree are returned as
      an array. 
     </p>
     <p class="para">
      If <code class="parameter">object_id</code> is specified, all the <acronym class="acronym">SNMP</acronym> objects
      below that <code class="parameter">object_id</code> are returned.
     </p>


function_name: snmpgetnext
name: object_id
type: string
description:
<p class="para">The <acronym class="acronym">SNMP</acronym> object id which precedes the wanted one.</p>


function_name: snmpset
name: hostname
type: string
description:
<p class="para">
       The hostname of the <acronym class="acronym">SNMP</acronym> agent (server).
      </p>


function_name: snmpwalk
name: object_id
type: string
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, <code class="parameter">object_id</code> is taken as the root of
       the <acronym class="acronym">SNMP</acronym> objects tree and all objects under that tree are returned as
       an array. 
      </p>
      <p class="para">
       If <code class="parameter">object_id</code> is specified, all the <acronym class="acronym">SNMP</acronym> objects
       below that <code class="parameter">object_id</code> are returned.
      </p>


function_name: snmpwalkoid
name: object_id
type: string
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, <code class="parameter">object_id</code> is taken as the root of
       the SNMP objects tree and all objects under that tree are returned as
       an array. 
      </p>
      <p class="para">
       If <code class="parameter">object_id</code> is specified, all the SNMP objects
       below that <code class="parameter">object_id</code> are returned.
      </p>


function_name: SNMP.__construct
name: version
type: int
description:
<p class="para">
      <acronym class="acronym">SNMP</acronym> protocol version:
      <strong><code><a href="class.snmp.html#snmp.constants.version-1">SNMP::VERSION_1</a></code></strong>, 
      <strong><code><a href="class.snmp.html#snmp.constants.version-2c">SNMP::VERSION_2C</a></code></strong>, 
      <strong><code><a href="class.snmp.html#snmp.constants.version-3">SNMP::VERSION_3</a></code></strong>.
     </p>


function_name: SNMP.__construct
name: hostname
type: string
description:
<p class="para">
      The <acronym class="acronym">SNMP</acronym> agent. <code class="parameter">hostname</code> may be suffixed with
      optional <acronym class="acronym">SNMP</acronym> agent port after colon. IPv6 addresses must be enclosed in square
      brackets if used with port. If FQDN is used for <code class="parameter">hostname</code>
      it will be resolved by php-snmp library, not by Net-SNMP engine. Usage
      of IPv6 addresses when specifying FQDN may be forced by enclosing FQDN
      into square brackets. Here it is some examples:
     <table class="doctable table">
      
      
       <tbody class="tbody">
        <tr><td>IPv4 with default port</td><td>127.0.0.1</td></tr>

        <tr><td>IPv6 with default port</td><td>::1 or [::1]</td></tr>

        <tr><td>IPv4 with specific port</td><td>127.0.0.1:1161</td></tr>

        <tr><td>IPv6 with specific port</td><td>[::1]:1161</td></tr>

        <tr><td>FQDN with default port</td><td>host.domain</td></tr>

        <tr><td>FQDN with specific port</td><td>host.domain:1161</td></tr>

        <tr><td>FQDN with default port, force usage of IPv6 address</td><td>[host.domain]</td></tr>

        <tr><td>FQDN with specific port, force usage of IPv6 address</td><td>[host.domain]:1161</td></tr>

       </tbody>
      
     </table>

     </p>


function_name: SNMP.__construct
name: community
type: string
description:
<p class="para">The purpuse of <code class="parameter">community</code> is
     <acronym class="acronym">SNMP</acronym> version specific:</p>
     <table class="doctable table">
      
      
       <tbody class="tbody">
        <tr><td>SNMP::VERSION_1</td><td><acronym class="acronym">SNMP</acronym> community</td></tr>

        <tr><td>SNMP::VERSION_2C</td><td><acronym class="acronym">SNMP</acronym> community</td></tr>

        <tr><td>SNMP::VERSION_3</td><td><acronym class="acronym">SNMP</acronym>v3 securityName</td></tr>

       </tbody>
      
     </table>


function_name: SNMP.get
name: objectId
type: string
description:
<p class="para">
      The <acronym class="acronym">SNMP</acronym> object (OID) or objects
     </p>


function_name: SNMP.get
name: preserveKeys
type: bool
description:
<p class="para">
      When <code class="parameter">objectId</code> is a array and
      <code class="parameter">preserveKeys</code> set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> keys in results
      will be taken exactly as in <code class="parameter">objectId</code>,
      otherwise <var class="varname">SNMP::oid_output_format</var> property is used to determinate
      the form of keys.
     </p>


function_name: SNMP.set
name: objectId
type: string
description:
<p class="para">
      The SNMP object id
     </p>
     <p class="para">
      When count of OIDs in object_id array is greater than
      max_oids object property set method will have to use multiple queries
      to perform requested value updates. In this case type and value checks
      are made per-chunk so second or subsequent requests may fail due to
      wrong type or value for OID requested. To mark this a warning is
      raised when count of OIDs in object_id array is greater than max_oids.
     </p>


function_name: SNMP.walk
name: suffixAsKey
type: bool
description:
<p class="para">
      By default full OID notation is used for keys in output array.
      If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> subtree prefix will be removed from keys leaving only suffix of object_id.
     </p>


function_name: SNMP.walk
name: maxRepetitions
type: int
initializer: -1
description:
<p class="para">
       This specifies the maximum number of iterations over the repeating variables.
       The default is to use this value from <acronym class="acronym">SNMP</acronym> object.
     </p>


function_name: SNMP.walk
name: nonRepeaters
type: int
initializer: -1
description:
<p class="para">
      This specifies the number of supplied variables that should not be iterated over.
      The default is to use this value from <acronym class="acronym">SNMP</acronym> object.
     </p>


function_name: socket_accept
name: socket
type: Socket
description:
<p class="para">
       A <span class="classname">Socket</span> instance created with <span class="function">socket_create</span>.
      </p>


function_name: socket_addrinfo_bind
name: address
type: AddressInfo
description:
<p class="para">
      <span class="classname">AddressInfo</span> instance created from <span class="function">socket_addrinfo_lookup</span>.
     </p>


function_name: socket_addrinfo_connect
name: address
type: AddressInfo
description:
<p class="para">
      <span class="classname">AddressInfo</span> instance created from <span class="function">socket_addrinfo_lookup</span>
     </p>


function_name: socket_addrinfo_lookup
name: service
type: null
description:
<p class="para">
      The service to connect to. If service is a numeric string, it designates the port.
      Otherwise it designates a network service name, which is mapped to a port by the operating system.
     </p>


function_name: socket_addrinfo_lookup
name: hints
type: array
initializer: []
description:
<p class="para">
      Hints provide criteria for selecting addresses returned.  You may specify the
      hints as defined by getaddrinfo.
     </p>


function_name: socket_bind
name: address
type: string
description:
<p class="para">
       If the socket is of the <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong> family, the
       <code class="parameter">address</code> is an IP in dotted-quad notation
       (e.g. <code class="literal">127.0.0.1</code>).
      </p>
      <p class="para">
       If the socket is of the <strong><code><a href="sockets.constants.html#constant.af-unix">AF_UNIX</a></code></strong> family, the
       <code class="parameter">address</code> is the path of a
       Unix-domain socket (e.g. <var class="filename">/tmp/my.sock</var>).
      </p>


function_name: socket_bind
name: port
type: int
description:
<p class="para">
       The <code class="parameter">port</code> parameter is only used when
       binding an <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong> socket, and designates
       the port on which to listen for connections.
      </p>


function_name: socket_close
name: socket
type: Socket
description:
<p class="para">
        A <span class="classname">Socket</span> instance created with <span class="function">socket_create</span>
        or <span class="function">socket_accept</span>.
       </p>


function_name: socket_connect
name: socket
type: Socket
description:
<p class="para">
       A <span class="classname">Socket</span> instance created with
       <span class="function">socket_create</span>.
      </p>


function_name: socket_connect
name: address
type: string
description:
<p class="para">
       The <code class="parameter">address</code> parameter is either an IPv4 address
       in dotted-quad notation (e.g. <code class="literal">127.0.0.1</code>) if 
       <code class="parameter">socket</code> is <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong>, a valid 
       IPv6 address (e.g. <code class="literal">::1</code>) if IPv6 support is enabled and 
       <code class="parameter">socket</code> is <strong><code><a href="sockets.constants.html#constant.af-inet6">AF_INET6</a></code></strong>
       or the pathname of a Unix domain socket, if the socket family is
       <strong><code><a href="sockets.constants.html#constant.af-unix">AF_UNIX</a></code></strong>.
      </p>


function_name: socket_connect
name: port
type: null
description:
<p class="para">
       The <code class="parameter">port</code> parameter is only used and is mandatory
       when connecting to an <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong> or an 
       <strong><code><a href="sockets.constants.html#constant.af-inet6">AF_INET6</a></code></strong> socket, and designates
       the port on the remote host to which a connection should be made.
      </p>


function_name: socket_create_listen
name: backlog
type: int
initializer: 128
description:
<p class="para">
       The <code class="parameter">backlog</code> parameter defines the maximum length
       the queue of pending connections may grow to.
       <strong><code>SOMAXCONN</code></strong> may be passed as
       <code class="parameter">backlog</code> parameter, see
       <span class="function">socket_listen</span> for more information.
      </p>


function_name: socket_create_pair
name: domain
type: int
description:
<p class="para">
       The <code class="parameter">domain</code> parameter specifies the protocol
       family to be used by the socket. See <span class="function">socket_create</span>
       for the full list.
      </p>


function_name: socket_create_pair
name: type
type: int
description:
<p class="para">
       The <code class="parameter">type</code> parameter selects the type of communication
       to be used by the socket. See <span class="function">socket_create</span> for the 
       full list.
      </p>


function_name: socket_create_pair
name: protocol
type: int
description:
<p class="para">
       The <code class="parameter">protocol</code> parameter sets the specific
       protocol within the specified <code class="parameter">domain</code> to be used
       when communicating on the returned socket. The proper value can be retrieved by
       name by using <span class="function">getprotobyname</span>. If
       the desired protocol is TCP, or UDP the corresponding constants
       <strong><code><a href="sockets.constants.html#constant.sol-tcp">SOL_TCP</a></code></strong>, and <strong><code><a href="sockets.constants.html#constant.sol-udp">SOL_UDP</a></code></strong>
       can also be used.
      </p>
      <p class="para">
       See <span class="function">socket_create</span> for the full list of supported 
       protocols.
      </p>


function_name: socket_create_pair
name: pair
type: array
description:
<p class="para">
       Reference to an array in which the two <span class="classname">Socket</span> instances will be inserted.
      </p>


function_name: socket_create
name: domain
type: int
description:
<p class="para">
       The <code class="parameter">domain</code> parameter specifies the protocol
       family to be used by the socket.
      </p>
      <table class="doctable table">
       <caption><strong>Available address/protocol families</strong></caption>
       
        <thead>
         <tr>
          <th>Domain</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong></td>
          <td>
           IPv4 Internet based protocols. TCP and UDP are common protocols of
           this protocol family.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.af-inet6">AF_INET6</a></code></strong></td>
          <td>
           IPv6 Internet based protocols. TCP and UDP are common protocols of
           this protocol family.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.af-unix">AF_UNIX</a></code></strong></td>
          <td>
           Local communication protocol family. High efficiency and low
           overhead make it a great form of IPC (Interprocess Communication).
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: socket_create
name: type
type: int
description:
<p class="para">
       The <code class="parameter">type</code> parameter selects the type of communication
       to be used by the socket.
      </p>
      <table class="doctable table">
       <caption><strong>Available socket types</strong></caption>
       
        <thead>
         <tr>
          <th>Type</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.sock-stream">SOCK_STREAM</a></code></strong></td>
          <td>
           Provides sequenced, reliable, full-duplex, connection-based byte streams.
           An out-of-band data transmission mechanism may be supported.
           The TCP protocol is based on this socket type.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.sock-dgram">SOCK_DGRAM</a></code></strong></td>
          <td>
           Supports datagrams (connectionless, unreliable messages of a fixed maximum length).
           The UDP protocol is based on this socket type.
          </td>
         </tr>

           <tr>
          <td><strong><code><a href="sockets.constants.html#constant.sock-seqpacket">SOCK_SEQPACKET</a></code></strong></td>
          <td>
           Provides a sequenced, reliable, two-way connection-based data transmission path for
           datagrams of fixed maximum length;  a consumer is required to read an
           entire packet with each read call.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.sock-raw">SOCK_RAW</a></code></strong></td>
          <td>
           Provides raw network protocol access. This special type of socket
           can be used to manually construct any type of protocol. A common use
           for this socket type is to perform ICMP requests (like ping).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.sock-rdm">SOCK_RDM</a></code></strong></td>
          <td>
           Provides a reliable datagram layer that does not guarantee ordering.
           This is most likely not implemented on your operating system.
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: socket_create
name: protocol
type: int
description:
<p class="para">
       The <code class="parameter">protocol</code> parameter sets the specific
       protocol within the specified <code class="parameter">domain</code> to be used
       when communicating on the returned socket. The proper value can be
       retrieved by name by using <span class="function">getprotobyname</span>. If
       the desired protocol is TCP, or UDP the corresponding constants
       <strong><code><a href="sockets.constants.html#constant.sol-tcp">SOL_TCP</a></code></strong>, and <strong><code><a href="sockets.constants.html#constant.sol-udp">SOL_UDP</a></code></strong>
       can also be used.
      </p>
      <table class="doctable table">
       <caption><strong>Common protocols</strong></caption>
       
        <thead>
         <tr>
          <th>Name</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>icmp</td>
          <td>
           The Internet Control Message Protocol is used primarily by gateways
           and hosts to report errors in datagram communication. The &quot;ping&quot;
           command (present in most modern operating systems) is an example
           application of ICMP.
          </td>
         </tr>

         <tr>
          <td>udp</td>
          <td>
           The User Datagram Protocol is a connectionless, unreliable,
           protocol with fixed record lengths. Due to these aspects, UDP
           requires a minimum amount of protocol overhead.
          </td>
         </tr>

         <tr>
          <td>tcp</td>
          <td>
           The Transmission Control Protocol is a reliable, connection based,
           stream oriented, full duplex protocol. TCP guarantees that all data packets
           will be received in the order in which they were sent. If any packet is somehow
           lost during communication, TCP will automatically retransmit the packet until
           the destination host acknowledges that packet. For reliability and performance
           reasons, the TCP implementation itself decides the appropriate octet boundaries
           of the underlying datagram communication layer. Therefore, TCP applications must
           allow for the possibility of partial record transmission.
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: socket_get_option
name: socket
type: Socket
description:
<p class="para">
       A <span class="classname">Socket</span> instance created with <span class="function">socket_create</span>
       or <span class="function">socket_accept</span>.
      </p>


function_name: socket_get_option
name: level
type: int
description:
<p class="para">
       The <code class="parameter">level</code> parameter specifies the protocol
       level at which the option resides. For example, to retrieve options at
       the socket level, a <code class="parameter">level</code> parameter of
       <strong><code><a href="sockets.constants.html#constant.sol-socket">SOL_SOCKET</a></code></strong> would be used. Other levels, such as
       <strong><code>TCP</code></strong>, can be used by
       specifying the protocol number of that level. Protocol numbers can be
       found by using the <span class="function">getprotobyname</span> function.
      </p>


function_name: socket_get_option
name: option
type: int
description:
<table class="doctable table">
       <caption><strong>Available Socket Options</strong></caption>
       
        <thead>
         <tr>
          <th>Option</th>
          <th>Description</th>
          <th>Type</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-debug">SO_DEBUG</a></code></strong></td>
          <td>
           Reports whether debugging information is being recorded.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-broadcast">SO_BROADCAST</a></code></strong></td>
          <td>
           Reports whether transmission of broadcast messages is supported.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-reuseaddr">SO_REUSEADDR</a></code></strong></td>
          <td>
           Reports whether local addresses can be reused.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-reuseport">SO_REUSEPORT</a></code></strong></td>
          <td>
           Reports whether local ports can be reused.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-keepalive">SO_KEEPALIVE</a></code></strong></td>
          <td>
           Reports whether connections are kept active with periodic transmission
           of messages. If the connected socket fails to respond to these messages,
           the connection is broken and processes writing to that socket are notified
           with a SIGPIPE signal.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-linger">SO_LINGER</a></code></strong></td>
          <td>
           <p class="para">
            Reports whether the <code class="parameter">socket</code> lingers on 
            <span class="function">socket_close</span> if data is present. By default, 
            when the socket is closed, it attempts to send all unsent data.
            In the case of a connection-oriented socket, 
            <span class="function">socket_close</span> will wait for its peer to
            acknowledge the data. 
           </p>
           <p class="para">
            If <var class="varname">l_onoff</var> is non-zero and 
            <var class="varname">l_linger</var> is zero, all the 
            unsent data will be discarded and RST (reset) is sent to the 
            peer in the case of a connection-oriented socket. 
           </p>
           <p class="para">
            On the other hand, if <var class="varname">l_onoff</var> is 
            non-zero and <var class="varname">l_linger</var> is non-zero,
            <span class="function">socket_close</span> will block until all the data 
            is sent or the time specified in <var class="varname">l_linger</var>
            elapses. If the socket is non-blocking, 
            <span class="function">socket_close</span> will fail and return an error.
           </p>
          </td>
          <td>
           <span class="type">array</span>. The array will contain two keys:
           <var class="varname">l_onoff</var> and 
           <var class="varname">l_linger</var>. 
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-oobinline">SO_OOBINLINE</a></code></strong></td>
          <td>
           Reports whether the <code class="parameter">socket</code> leaves out-of-band data inline.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-sndbuf">SO_SNDBUF</a></code></strong></td>
          <td>
           Reports the size of the send buffer.
          </td>
          <td>
           <span class="type">int</span>
          </td>          
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-rcvbuf">SO_RCVBUF</a></code></strong></td>
          <td>
           Reports the size of the receive buffer.
          </td>
          <td>
           <span class="type">int</span>
          </td>         
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-error">SO_ERROR</a></code></strong></td>
          <td>
           Reports information about error status and clears it.
          </td>
          <td>
           <span class="type">int</span> (cannot be set by <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-type">SO_TYPE</a></code></strong></td>
          <td>
           Reports the <code class="parameter">socket</code> type (e.g. 
           <strong><code><a href="sockets.constants.html#constant.sock-stream">SOCK_STREAM</a></code></strong>).
          </td>
          <td>
           <span class="type">int</span> (cannot be set by <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-dontroute">SO_DONTROUTE</a></code></strong></td>
          <td>
           Reports whether outgoing messages bypass the standard routing facilities.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-rcvlowat">SO_RCVLOWAT</a></code></strong></td>
          <td>
           Reports the minimum number of bytes to process for <code class="parameter">socket</code> 
           input operations.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-rcvtimeo">SO_RCVTIMEO</a></code></strong></td>
          <td>
           Reports the timeout value for input operations.
          </td>
          <td>
           <span class="type">array</span>. The array will contain two keys:
           <var class="varname">sec</var> which is the seconds part on the timeout
           value and <var class="varname">usec</var> which is the microsecond part 
           of the timeout value. 
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-sndtimeo">SO_SNDTIMEO</a></code></strong></td>
          <td>
           Reports the timeout value specifying the amount of time that an output
           function blocks because flow control prevents data from being sent.
          </td>
          <td>
           <span class="type">array</span>. The array will contain two keys:
           <var class="varname">sec</var> which is the seconds part on the timeout
           value and <var class="varname">usec</var> which is the microsecond part 
           of the timeout value. 
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-sndlowat">SO_SNDLOWAT</a></code></strong></td>
          <td>
           Reports the minimum number of bytes to process for <code class="parameter">socket</code> output operations.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-nodelay">TCP_NODELAY</a></code></strong></td>
          <td>
           Reports whether the Nagle TCP algorithm is disabled.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code>MCAST_JOIN_GROUP</code></strong></td>
          <td>
           Joins a multicast group.
          </td>
          <td>
           <span class="type">array</span> with keys <code class="literal">&quot;group&quot;</code>, specifying
           a <span class="type">string</span> with an IPv4 or IPv6 multicast address and
           <code class="literal">&quot;interface&quot;</code>, specifying either an interface
           number (type <span class="type">int</span>) or a <code class="literal">string</code> with
           the interface name, like <code class="literal">&quot;eth0&quot;</code>.
           <code class="literal">0</code> can be specified to indicate the interface
           should be selected using routing rules. (can only be used in
           <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code>MCAST_LEAVE_GROUP</code></strong></td>
          <td>
           Leaves a multicast group.
          </td>
          <td>
           <span class="type">array</span>. See <strong><code>MCAST_JOIN_GROUP</code></strong> for
           more information. (can only be used in
           <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code>MCAST_BLOCK_SOURCE</code></strong></td>
          <td>
           Blocks packets arriving from a specific source to a specific
           multicast group, which must have been previously joined.
          </td>
          <td>
           <span class="type">array</span> with the same keys as
           <strong><code>MCAST_JOIN_GROUP</code></strong>, plus one extra key,
           <code class="literal">source</code>, which maps to a <span class="type">string</span>
           specifying an IPv4 or IPv6 address of the source to be blocked.
           (can only be used in <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code>MCAST_UNBLOCK_SOURCE</code></strong></td>
          <td>
           Unblocks (start receiving again) packets arriving from a specific
           source address to a specific multicast group, which must have been
           previously joined.
          </td>
          <td>
           <span class="type">array</span> with the same format as
           <strong><code>MCAST_BLOCK_SOURCE</code></strong>.
           (can only be used in <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code>MCAST_JOIN_SOURCE_GROUP</code></strong></td>
          <td>
           Receive packets destined to a specific multicast group whose source
           address matches a specific value.
          </td>
          <td>
           <span class="type">array</span> with the same format as
           <strong><code>MCAST_BLOCK_SOURCE</code></strong>.
           (can only be used in <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code>MCAST_LEAVE_SOURCE_GROUP</code></strong></td>
          <td>
           Stop receiving packets destined to a specific multicast group whose
           source address matches a specific value.
          </td>
          <td>
           <span class="type">array</span> with the same format as
           <strong><code>MCAST_BLOCK_SOURCE</code></strong>.
           (can only be used in <span class="function">socket_set_option</span>)
          </td>
         </tr>

         <tr>
          <td><strong><code>IP_MULTICAST_IF</code></strong></td>
          <td>
           The outgoing interface for IPv4 multicast packets.
          </td>
          <td>
           Either <span class="type">int</span> specifying the interface number or a
           <span class="type">string</span> with an interface name, like
           <code class="literal">eth0</code>. The value <span class="type">0</span> can be used to
           indicate the routing table is to used in the interface selection.
           The function <span class="function">socket_get_option</span> returns an
           interface index.
           Note that, unlike the C API, this option does NOT take an IP
           address. This eliminates the interface difference between
           <strong><code>IP_MULTICAST_IF</code></strong> and
           <strong><code>IPV6_MULTICAST_IF</code></strong>.
          </td>
         </tr>

         <tr>
          <td><strong><code>IPV6_MULTICAST_IF</code></strong></td>
          <td>
           The outgoing interface for IPv6 multicast packets.
          </td>
          <td>
           The same as <strong><code>IP_MULTICAST_IF</code></strong>.
          </td>
         </tr>

         <tr>
          <td><strong><code>IP_MULTICAST_LOOP</code></strong></td>
          <td>
           The multicast loopback policy for IPv4 packets enables or disables
           loopback of outgoing multicasts, which must have been previously joined.
           The effect differs, however, whether it applies on unixes or Windows,
           the former being on the receive path whereas the latter being
           on the send path.
          </td>
          <td>
           <span class="type">int</span> (either <code class="literal">0</code> or
           <code class="literal">1</code>). For <span class="function">socket_set_option</span>
           any value will be accepted and will be converted to a boolean
           following the usual PHP rules.
          </td>
         </tr>

         <tr>
          <td><strong><code>IPV6_MULTICAST_LOOP</code></strong></td>
          <td>
           Analogous to <strong><code>IP_MULTICAST_LOOP</code></strong>, but for IPv6.
          </td>
          <td>
           <span class="type">int</span>. See <strong><code>IP_MULTICAST_LOOP</code></strong>.
          </td>
         </tr>

         <tr>
          <td><strong><code>IP_MULTICAST_TTL</code></strong></td>
          <td>
           The time-to-live of outgoing IPv4 multicast packets. This should be
           a value between 0 (don&#039;t leave the interface) and 255. The default
           value is 1 (only the local network is reached).
          </td>
          <td>
           <span class="type">int</span> between 0 and 255.
          </td>
         </tr>

         <tr>
          <td><strong><code>IPV6_MULTICAST_HOPS</code></strong></td>
          <td>
           Analogous to <strong><code>IP_MULTICAST_TTL</code></strong>, but for IPv6
           packets. The value -1 is also accepted, meaning the route default
           should be used.
          </td>
          <td>
           <span class="type">int</span> between -1 and 255.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-mark">SO_MARK</a></code></strong></td>
          <td>
           Sets an identifier on the socket for packet filtering
           purpose on Linux.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-acceptfilter">SO_ACCEPTFILTER</a></code></strong></td>
          <td>
           Adds an accept filter on the listened socket (FreeBSD/NetBSD).
           An accept filter kernel module needs to be loaded beforehand
           on FreeBSD (e.g. accf_http).
          </td>
          <td>
           <span class="type">string</span> name of the filter (length 15 max).
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-user-cookie">SO_USER_COOKIE</a></code></strong></td>
          <td>
           Sets an identifier on the socket for packet filtering
           purpose on FreeBSD.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-rtable">SO_RTABLE</a></code></strong></td>
          <td>
           Sets an identifier on the socket for packet filtering
           purpose on OpenBSD.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-donttrunc">SO_DONTTRUNC</a></code></strong></td>
          <td>
           Retain unread data.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-wantmore">SO_WANTMORE</a></code></strong></td>
          <td>
           Give a hint when more data is ready.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-defer-accept">TCP_DEFER_ACCEPT</a></code></strong></td>
          <td>
           Don&#039;t notify a listening socket until data is ready.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-incoming-cpu">SO_INCOMING_CPU</a></code></strong></td>
          <td>
           Gets/Sets the cpu affinity of a socket.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-meminfo">SO_MEMINFO</a></code></strong></td>
          <td>
           Gets all the meminfo of a socket.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-bpf-extensions">SO_BPF_EXTENSIONS</a></code></strong></td>
          <td>
           Gets the supported BPF extensions by the kernel to attach to a socket.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.so-setfib">SO_SETFIB</a></code></strong></td>
          <td>
           Sets the route table (FIB) of a socket. (FreeBSD only)
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.sol-filter">SOL_FILTER</a></code></strong></td>
          <td>
           Filters attributed to a socket. (Solaris/Illumos only)
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-keepcnt">TCP_KEEPCNT</a></code></strong></td>
          <td>
           Sets the maximum number of keepalive probes TCP should send before dropping the connection.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-keepidle">TCP_KEEPIDLE</a></code></strong></td>
          <td>
           Sets the time the connection needs to remain idle.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-keepintvl">TCP_KEEPINTVL</a></code></strong></td>
          <td>
           Sets the time between individual keepalive probes.
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-keepalive">TCP_KEEPALIVE</a></code></strong></td>
          <td>
           Sets the time the connection needs to remain idle. (macOS only)
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.tcp-notsent-lowat">TCP_NOTSENT_LOWAT</a></code></strong></td>
          <td>
           Sets the limit number of unsent data in write queue by the socket stream. (Linux only)
          </td>
          <td>
           <span class="type">int</span>
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: socket_getpeername
name: address
type: string
description:
<p class="para">
       If the given socket is of type <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong> or
       <strong><code><a href="sockets.constants.html#constant.af-inet6">AF_INET6</a></code></strong>, <span class="function">socket_getpeername</span>
       will return the peers (remote) <em>IP address</em> in
       appropriate notation (e.g. <code class="literal">127.0.0.1</code> or
       <code class="literal">fe80::1</code>) in the <code class="parameter">address</code>
       parameter and, if the optional <code class="parameter">port</code> parameter is
       present, also the associated port.
      </p>
      <p class="para">
       If the given socket is of type <strong><code><a href="sockets.constants.html#constant.af-unix">AF_UNIX</a></code></strong>,
       <span class="function">socket_getpeername</span> will return the Unix filesystem
       path (e.g. <code class="literal">/var/run/daemon.sock</code>) in the
       <code class="parameter">address</code> parameter.
      </p>


function_name: socket_getpeername
name: port
type: int
description:
<p class="para">
       If given, this will hold the port associated to
       <code class="parameter">address</code>.
      </p>


function_name: socket_getsockname
name: address
type: string
description:
<p class="para">
       If the given socket is of type <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong>
       or <strong><code><a href="sockets.constants.html#constant.af-inet6">AF_INET6</a></code></strong>, <span class="function">socket_getsockname</span>
       will return the local <em>IP address</em> in appropriate notation (e.g.
       <code class="literal">127.0.0.1</code> or <code class="literal">fe80::1</code>) in the
       <code class="parameter">address</code> parameter and, if the optional
       <code class="parameter">port</code> parameter is present, also the associated port.
      </p>
      <p class="para">
       If the given socket is of type <strong><code><a href="sockets.constants.html#constant.af-unix">AF_UNIX</a></code></strong>,
       <span class="function">socket_getsockname</span> will return the Unix filesystem
       path (e.g. <code class="literal">/var/run/daemon.sock</code>) in the
       <code class="parameter">address</code> parameter.
      </p>


function_name: socket_listen
name: socket
type: Socket
description:
<p class="para">
       A <span class="classname">Socket</span> instance created with <span class="function">socket_create</span>
       or <span class="function">socket_addrinfo_bind</span>
      </p>


function_name: socket_listen
name: backlog
type: int
description:
<p class="para">
       A maximum of <code class="parameter">backlog</code> incoming connections will be
       queued for processing. If a connection request arrives with the queue
       full the client may receive an error with an indication of
       <code class="literal">ECONNREFUSED</code>, or, if the underlying protocol supports
       retransmission, the request may be ignored so that retries may succeed.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The maximum number passed to the <code class="parameter">backlog</code>
        parameter highly depends on the underlying platform. On Linux, it is
        silently truncated to <strong><code>SOMAXCONN</code></strong>. On win32, if
        passed <strong><code>SOMAXCONN</code></strong>, the underlying service provider
        responsible for the socket will set the backlog to a maximum
        <em>reasonable</em> value. There is no standard provision to
        find out the actual backlog value on this platform.
       </p>
      </p></blockquote>


function_name: socket_read
name: length
type: int
description:
<p class="para">
       The maximum number of bytes read is specified by the
       <code class="parameter">length</code> parameter. Otherwise you can use
       <code class="literal">\r</code>, <code class="literal">\n</code>,
       or <code class="literal">\0</code> to end reading (depending on the <code class="parameter">mode</code>
       parameter, see below).
      </p>


function_name: socket_read
name: mode
type: int
description:
<p class="simpara">
          <strong><code><a href="sockets.constants.html#constant.php-normal-read">PHP_NORMAL_READ</a></code></strong> - reading stops at
          <code class="literal">\n</code> or <code class="literal">\r</code>.
         </p>


function_name: socket_recv
name: socket
type: Socket
description:
<p class="para">
       The <code class="parameter">socket</code> must be a <span class="classname">Socket</span> instance previously
       created by socket_create().
      </p>


function_name: socket_recv
name: data
type: null
description:
<p class="para">
       The data received will be fetched to the variable specified with
       <code class="parameter">data</code>. If an error occurs, if the
       connection is reset, or if no data is
       available, <code class="parameter">data</code> will be set to <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: socket_recv
name: length
type: int
description:
<p class="para">
       Up to <code class="parameter">length</code> bytes will be fetched from remote host.
      </p>


function_name: socket_recv
name: flags
type: int
description:
<p class="para">
       The value of <code class="parameter">flags</code> can be any combination of 
       the following flags, joined with the binary OR (<code class="literal">|</code>)
       operator.
      </p>
      
      <table class="doctable table">
       <caption><strong>Possible values for <code class="parameter">flags</code></strong></caption>
       
        <thead>
         <tr>
          <th>Flag</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.msg-oob">MSG_OOB</a></code></strong></td>
          <td>
           Process out-of-band data.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.msg-peek">MSG_PEEK</a></code></strong></td>
          <td>
           Receive data from the beginning of the receive queue without
           removing it from the queue.
          </td>
         </tr>

         <tr>
          <td><strong><code><a href="sockets.constants.html#constant.msg-waitall">MSG_WAITALL</a></code></strong></td>
          <td>
           Block until at least <code class="parameter">length</code> are received.
           However, if a signal is caught or the remote host disconnects, the
           function may return less data.
          </td>
         </tr>

         <tr>
          <td><strong><code>MSG_DONTWAIT</code></strong></td>
          <td>
           With this flag set, the function returns even if it would normally
           have blocked.
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: socket_recvfrom
name: data
type: string
description:
<p class="para">
       The data received will be fetched to the variable specified with
       <code class="parameter">data</code>.
      </p>


function_name: socket_recvfrom
name: address
type: string
description:
<p class="para">
       If the socket is of the type <strong><code><a href="sockets.constants.html#constant.af-unix">AF_UNIX</a></code></strong> type,
       <code class="parameter">address</code> is the path to the file. Else, for
       unconnected sockets, <code class="parameter">address</code> is the IP address of,
       the remote host, or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> if the socket is connection-oriented.
      </p>


function_name: socket_recvfrom
name: port
type: int
description:
<p class="para">
       This argument only applies to <strong><code><a href="sockets.constants.html#constant.af-inet">AF_INET</a></code></strong> and
       <strong><code><a href="sockets.constants.html#constant.af-inet6">AF_INET6</a></code></strong> sockets, and specifies the remote port
       from which the data is received. If the socket is connection-oriented,
       <code class="parameter">port</code> will be <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: socket_select
name: read
type: null
description:
<p class="para">
       The sockets listed in the <code class="parameter">read</code> array will be
       watched to see if characters become available for reading (more
       precisely, to see if a read will not block - in particular, a socket
       is also ready on end-of-file, in which case a
       <span class="function">socket_read</span> will return a zero length string).
      </p>


function_name: socket_select
name: write
type: null
description:
<p class="para">
       The sockets listed in the <code class="parameter">write</code> array will be
       watched to see if a write will not block.
      </p>


function_name: socket_select
name: except
type: null
description:
<p class="para">
       The sockets listed in the <code class="parameter">except</code> array will be
       watched for exceptions.
      </p>


function_name: socket_select
name: seconds
type: null
description:
<p class="para">
       The <code class="parameter">seconds</code> and <code class="parameter">microseconds</code>
       together form the <code class="literal">timeout</code> parameter. The
       <code class="literal">timeout</code> is an upper bound on the amount of time
       elapsed before <span class="function">socket_select</span> return.
       <code class="parameter">seconds</code> may be zero , causing
       <span class="function">socket_select</span> to return immediately. This is useful
       for polling. If <code class="parameter">seconds</code> is <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> (no timeout),
       <span class="function">socket_select</span> can block indefinitely.
      </p>


function_name: socket_send
name: data
type: string
description:
<p class="para">
       A buffer containing the data that will be sent to the remote host.
      </p>


function_name: socket_send
name: length
type: int
description:
<p class="para">
       The number of bytes that will be sent to the remote host from 
       <code class="parameter">data</code>.
      </p>


function_name: socket_send
name: flags
type: int
description:
<p class="para">
       The value of <code class="parameter">flags</code> can be any combination of 
       the following flags, joined with the binary OR (<code class="literal">|</code>)
       operator.
       <table class="doctable table">
        <caption><strong>Possible values for <code class="parameter">flags</code></strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="sockets.constants.html#constant.msg-oob">MSG_OOB</a></code></strong></td>
           <td>
            Send OOB (out-of-band) data.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="sockets.constants.html#constant.msg-eor">MSG_EOR</a></code></strong></td>
           <td>
            Indicate a record mark. The sent data completes the record.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="sockets.constants.html#constant.msg-eof">MSG_EOF</a></code></strong></td>
           <td>
            Close the sender side of the socket and include an appropriate
            notification of this at the end of the sent data. The sent data
            completes the transaction.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="sockets.constants.html#constant.msg-dontroute">MSG_DONTROUTE</a></code></strong></td>
           <td>
            Bypass routing, use direct interface.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: socket_sendto
name: socket
type: Socket
description:
<p class="para">
       A <span class="classname">Socket</span> instance created using <span class="function">socket_create</span>.
      </p>


function_name: socket_sendto
name: data
type: string
description:
<p class="para">
       The sent data will be taken from buffer <code class="parameter">data</code>.
      </p>


function_name: socket_sendto
name: length
type: int
description:
<p class="para">
       <code class="parameter">length</code> bytes from <code class="parameter">data</code> will be
       sent.
      </p>


function_name: socket_sendto
name: port
type: null
description:
<p class="para">
       <code class="parameter">port</code> is the remote port number at which the data
       will be sent.
      </p>


function_name: socket_set_option
name: level
type: int
description:
<p class="para">
       The <code class="parameter">level</code> parameter specifies the protocol
       level at which the option resides. For example, to set options at
       the socket level, a <code class="parameter">level</code> parameter of
       <strong><code><a href="sockets.constants.html#constant.sol-socket">SOL_SOCKET</a></code></strong> would be used. Other levels, such as
       TCP, can be used by specifying the protocol number of that level. 
       Protocol numbers can be found by using the 
       <span class="function">getprotobyname</span> function.
      </p>


function_name: socket_set_option
name: option
type: int
description:
<p class="para">
       The available socket options are the same as those for the
       <span class="function">socket_get_option</span> function.
      </p>


function_name: socket_shutdown
name: mode
type: int
initializer: 2
description:
<p class="para">
       The value of <code class="parameter">mode</code> can be one of the following:
       <table class="doctable table">
        <caption><strong>possible values for <code class="parameter">mode</code></strong></caption>
        
         <tbody class="tbody">
          <tr>
           <td><code class="literal">0</code></td>
           <td>
            Shutdown socket reading
           </td>
          </tr>

          <tr>
           <td><code class="literal">1</code></td>
           <td>
            Shutdown socket writing
           </td>
          </tr>

          <tr>
           <td><code class="literal">2</code></td>
           <td>
            Shutdown socket reading and writing
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: socket_strerror
name: error_code
type: int
description:
<p class="para">
       A valid socket error number, likely produced by 
       <span class="function">socket_last_error</span>.
      </p>


function_name: socket_write
name: length
type: null
description:
<p class="para">
       The optional parameter <code class="parameter">length</code> can specify an
       alternate length of bytes written to the socket. If this length is
       greater than the buffer length, it is silently truncated to the length
       of the buffer.
      </p>


function_name: socket_wsaprotocol_info_import
name: info_id
type: string
description:
<p class="para">
      The ID which has been returned by a former call to
      <span class="function">socket_wsaprotocol_info_export</span>.
     </p>


function_name: ssh2_auth_agent
name: session
type: resource
description:
<p class="para">
       An SSH connection link identifier, obtained from a call to
       <span class="function">ssh2_connect</span>.
      </p>


function_name: ssh2_auth_hostbased_file
name: passphrase
type: string
description:
<p class="para">
       If <code class="parameter">privkeyfile</code> is encrypted (which it should
       be), the passphrase must be provided.
      </p>


function_name: ssh2_auth_hostbased_file
name: local_username
type: string
description:
<p class="para">
       If <code class="parameter">local_username</code> is omitted, then the value
       for <code class="parameter">username</code> will be used for it.
      </p>


function_name: ssh2_auth_pubkey_file
name: pubkeyfile
type: string
description:
<p class="para">
       The public key file needs to be in OpenSSH&#039;s format. It should look something like:
      </p>
      <p class="para">
       ssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110
      </p>


function_name: ssh2_auth_pubkey_file
name: passphrase
type: string
description:
<p class="para">
       If <code class="parameter">privkeyfile</code> is encrypted (which it should
       be), the <code class="parameter">passphrase</code> must be provided.
      </p>


function_name: ssh2_connect
name: methods
type: array
description:
<p class="para">
       <code class="parameter">methods</code> may be an associative array with up to four parameters
       as described below.
      </p>
      <p class="para">
       <table class="doctable table">
        <caption><strong><code class="parameter">methods</code> may be an associative array
               with any or all of the following parameters.</strong></caption>
        
         <thead>
          <tr>
           <th>Index</th>
           <th>Meaning</th>
           <th>Supported Values*</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>kex</td>
           <td>
            List of key exchange methods to advertise, comma separated
            in order of preference.
           </td>
           <td>
            <code class="literal">diffie-hellman-group1-sha1</code>,
            <code class="literal">diffie-hellman-group14-sha1</code>, and
            <code class="literal">diffie-hellman-group-exchange-sha1</code>
           </td>
          </tr>

          <tr>
           <td>hostkey</td>
           <td>
            List of hostkey methods to advertise, comma separated
            in order of preference.
           </td>
           <td>
            <code class="literal">ssh-rsa</code> and
            <code class="literal">ssh-dss</code>
           </td>
          </tr>

          <tr>
           <td>client_to_server</td>
           <td>
            Associative array containing crypt, compression, and
            message authentication code (MAC) method preferences
            for messages sent from client to server.
           </td>
           <td class="empty">&nbsp;</td>
          </tr>

          <tr>
           <td>server_to_client</td>
           <td>
            Associative array containing crypt, compression, and
            message authentication code (MAC) method preferences
            for messages sent from server to client.
           </td>
           <td class="empty">&nbsp;</td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       * - Supported Values are dependent on methods supported by underlying library.
       See <a href="http://libssh2.org/" class="link external">&raquo;&nbsp;libssh2</a> documentation for additional
       information.
      </p>
      <p class="para">
       <table class="doctable table">
        <caption><strong>
         <code class="parameter">client_to_server</code> and
         <code class="parameter">server_to_client</code> may be an associative array
         with any or all of the following parameters.
        </strong></caption>
        
         <thead>
          <tr>
           <th>Index</th>
           <th>Meaning</th>
           <th>Supported Values*</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>crypt</td>
           <td>List of crypto methods to advertise, comma separated
            in order of preference.</td>
           <td>
            <code class="literal">rijndael-cbc@lysator.liu.se</code>,
            <code class="literal">aes256-cbc</code>,
            <code class="literal">aes192-cbc</code>,
            <code class="literal">aes128-cbc</code>,
            <code class="literal">3des-cbc</code>,
            <code class="literal">blowfish-cbc</code>,
            <code class="literal">cast128-cbc</code>,
            <code class="literal">arcfour</code>, and
            <code class="literal">none**</code>
           </td>
          </tr>

          <tr>
           <td>comp</td>
           <td>List of compression methods to advertise, comma separated
            in order of preference.</td>
           <td>
            <code class="literal">zlib</code> and
            <code class="literal">none</code>
           </td>
          </tr>

          <tr>
           <td>mac</td>
           <td>List of MAC methods to advertise, comma separated
            in order of preference.</td>
           <td>
            <code class="literal">hmac-sha1</code>,
            <code class="literal">hmac-sha1-96</code>,
            <code class="literal">hmac-ripemd160</code>,
            <code class="literal">hmac-ripemd160@openssh.com</code>, and
            <code class="literal">none**</code>
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <strong>Crypt and MAC method &quot;<code class="literal">none</code>&quot;</strong><br />
        <p class="para">
         For security reasons, <code class="literal">none</code> is disabled by the underlying
         <a href="http://libssh2.org/" class="link external">&raquo;&nbsp;libssh2</a> library unless explicitly enabled
         during build time by using the appropriate ./configure options.  See documentation
         for the underlying library for more information.
        </p>
       </p></blockquote>
      </p>


function_name: ssh2_connect
name: callbacks
type: array
description:
<p class="para">
       <code class="parameter">callbacks</code> may be an associative array with any
       or all of the following parameters.
       <table class="doctable table">
        <caption><strong>
         Callbacks parameters
        </strong></caption>
        
         <thead>
          <tr>
           <th>Index</th>
           <th>Meaning</th>
           <th>Prototype</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>ignore</td>
           <td>
            Name of function to call when an
            <strong><code>SSH2_MSG_IGNORE</code></strong> packet is received
           </td>
           <td>void ignore_cb($message)</td>
          </tr>

          <tr>
           <td>debug</td>
           <td>
            Name of function to call when an
            <strong><code>SSH2_MSG_DEBUG</code></strong> packet is received
           </td>
           <td>void debug_cb($message, $language, $always_display)</td>
          </tr>

          <tr>
           <td>macerror</td>
           <td>
            Name of function to call when a packet is received but the
            message authentication code failed.  If the callback returns
            <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the mismatch will be ignored, otherwise the connection
            will be terminated.
           </td>
           <td>bool macerror_cb($packet)</td>
          </tr>

          <tr>
           <td>disconnect</td>
           <td>
            Name of function to call when an
            <strong><code>SSH2_MSG_DISCONNECT</code></strong> packet is received
           </td>
           <td>void disconnect_cb($reason, $message, $language)</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: ssh2_disconnect
name: session
type: resource
description:
<p class="para">
       An SSH connection link identifier, obtained from a call to
       <span class="function">ssh2_connect</span>.
     </p>


function_name: ssh2_exec
name: env
type: array
description:
<p class="para">
       <code class="parameter">env</code> may be passed as an associative array of
       name/value pairs to set in the target environment.
      </p>


function_name: ssh2_exec
name: width_height_type
type: int
initializer: SSH2_TERM_UNIT_CHARS
description:
<p class="para">
       <code class="parameter">width_height_type</code> should be one of
       <strong><code><a href="ssh2.constants.html#constant.ssh2-term-unit-chars">SSH2_TERM_UNIT_CHARS</a></code></strong> or
       <strong><code><a href="ssh2.constants.html#constant.ssh2-term-unit-pixels">SSH2_TERM_UNIT_PIXELS</a></code></strong>.
      </p>


function_name: ssh2_fingerprint
name: flags
type: int
initializer: SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX
description:
<p class="para">
       <code class="parameter">flags</code> may be either of
       <strong><code><a href="ssh2.constants.html#constant.ssh2-fingerprint-md5">SSH2_FINGERPRINT_MD5</a></code></strong> or
       <strong><code><a href="ssh2.constants.html#constant.ssh2-fingerprint-sha1">SSH2_FINGERPRINT_SHA1</a></code></strong> logically ORed with
       <strong><code><a href="ssh2.constants.html#constant.ssh2-fingerprint-hex">SSH2_FINGERPRINT_HEX</a></code></strong> or
       <strong><code><a href="ssh2.constants.html#constant.ssh2-fingerprint-raw">SSH2_FINGERPRINT_RAW</a></code></strong>.
      </p>


function_name: ssh2_forward_listen
name: session
type: resource
description:
<p class="para">
      An SSH Session resource, obtained from a call to <span class="function">ssh2_connect</span>.
     </p>


function_name: ssh2_poll
name: desc
type: array
description:
<p class="para">
      An indexed array of subarrays with the keys
      <code class="literal">&#039;resource&#039;</code> and <code class="literal">&#039;events&#039;</code>.
      The value of the resource is a (channel) stream or an SSH2 Listener resource.
      The value of the event are SSH2_POLL* flags bitwise ORed together.
      Each subarray will be populated with an <code class="literal">&#039;revents&#039;</code> element on return,
      whose values are SSH2_POLL* flags bitwise ORed together of the events that occurred.
     </p>


function_name: ssh2_publickey_add
name: pkey
type: resource
description:
<p class="para">
       Publickey Subsystem resource created by <span class="function">ssh2_publickey_init</span>.
      </p>


function_name: ssh2_publickey_add
name: attributes
type: array
description:
<p class="para">
       Associative array of attributes to assign to this public key.
       Refer to ietf-secsh-publickey-subsystem for a list of supported attributes.
       To mark an attribute as mandatory, precede its name with an asterisk.
       If the server is unable to support an attribute marked mandatory,
       it will abort the add process.
      </p>


function_name: ssh2_scp_send
name: create_mode
type: int
initializer: 0644
description:
<p class="para">
       The file will be created with the mode specified by
       <code class="parameter">create_mode</code>.
      </p>


function_name: ssh2_send_eof
name: channel
type: resource
description:
<p class="para">
      An SSH stream; can be acquired through functions like <span class="function">ssh2_fetch_stream</span>
      or <span class="function">ssh2_connect</span>.
     </p>


function_name: ssh2_sftp_chmod
name: sftp
type: resource
description:
<p class="para">
       An SSH2 SFTP resource opened by <span class="function">ssh2_sftp</span>.
      </p>


function_name: ssh2_sftp_chmod
name: mode
type: int
description:
<p class="para">
       Permissions on the file. See the <span class="function">chmod</span> for more details on this parameter.
      </p>


function_name: ssh2_sftp_mkdir
name: mode
type: int
initializer: 0777
description:
<p class="para">
       Permissions on the new directory.
       The actual mode is affected by the current umask.
      </p>


function_name: ssh2_sftp_mkdir
name: recursive
type: bool
description:
<p class="para">
       If <code class="parameter">recursive</code> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> any parent directories
       required for <code class="parameter">dirname</code> will be automatically created as well.
      </p>


function_name: ssh2_sftp_rename
name: to
type: string
description:
<p class="para">
       The new file name that replaces <code class="parameter">from</code>.
      </p>


function_name: ssh2_shell
name: termtype
type: string
initializer: "vanilla"
description:
<p class="para">
       <code class="parameter">termtype</code> should correspond to one of the
       entries in the target system&#039;s <code class="literal">/etc/termcap</code> file.
      </p>


function_name: Stomp.abort
name: link
type: resource
description:
<p class="para">Procedural style only: The stomp link identifier returned by <span class="function">stomp_connect</span>.</p>


function_name: Stomp.readFrame
name: class_name
type: string
initializer: "stompFrame"
description:
<p class="para">
        The name of the class to instantiate. If not specified, a stompFrame object is returned.
      </p>


function_name: SVM.crossvalidate
name: problem
type: array
description:
<p class="para">
      The problem data. This can either be in the form of an array, the URL 
      of an SVMLight formatted file, or a stream to an opened SVMLight 
      formatted datasource. 
      </p>


function_name: SVM.crossvalidate
name: number_of_folds
type: int
description:
<p class="para">
       The number of sets the data should be divided into and cross tested. 
       A higher number means smaller training sets and less reliability. 5 is 
       a good number to start with. 
      </p>


function_name: SVM.train
name: problem
type: array
description:
<p class="para">
       The problem can be provided in three different ways. 
       An array, where the data should start with the class label 
       (usually 1 or -1) then followed by a sparse data set of 
       dimension =&gt; data pairs. 
       A URL to a file containing a SVM Light formatted problem, with the 
       each line being a new training example, the start of each line 
       containing the class (1, -1) then a series of tab separated data 
       values shows as key:value. 
       A opened stream pointing to a data source formatted as in the file above. 
      </p>


function_name: SVM.train
name: weights
type: array
description:
<p class="para">
       Weights are an optional set of weighting parameters for the different 
       classes, to help account for unbalanced training sets. For example, 
       if the classes were 1 and -1, and -1 had significantly more example 
       than one, the weight for -1 could be 0.5. Weights should be in the range 0-1.
      </p>


function_name: SVMModel.predict_probability
name: data
type: array
description:
<p class="para">
       The array to be classified. This should be a series of key =&gt; value 
       pairs in increasing key order, but not necessarily continuous. 
      </p>


function_name: svn_add
name: path
type: string
description:
<p class="para">
       Path of item to add.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_add
name: recursive
type: bool
description:
<p class="para">
       If item is directory, whether or not to recursively add
       all of its contents. Default is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>
      </p>


function_name: svn_add
name: force
type: bool
description:
<p class="para">
       If true, Subversion will recurse into already versioned directories
       in order to add unversioned files that may be hiding in those
       directories. Default is <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      </p>


function_name: svn_auth_get_parameter
name: key
type: string
description:
<p class="para">
       String key name. Use the <a href="svn.constants.html#svn.constants.auth" class="link">authentication constants</a>
       defined by this extension to specify a key.
      </p>


function_name: svn_auth_set_parameter
name: value
type: string
description:
<p class="para">
       String value to set to parameter at key. Format of value varies
       with the parameter.
      </p>


function_name: svn_cat
name: revision_no
type: int
description:
<p class="para">
       Integer revision number of item to retrieve, default is the HEAD
       revision.
      </p>


function_name: svn_checkout
name: targetpath
type: string
description:
<p class="para">
       String local path to directory to check out in to
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_checkout
name: revision
type: int
description:
<p class="para">
       Integer revision number of repository to check out. Default is
       HEAD, the most recent revision.
      </p>


function_name: svn_checkout
name: flags
type: int
description:
<p class="para">
       Any combination of <strong><code>SVN_NON_RECURSIVE</code></strong> and
       <strong><code>SVN_IGNORE_EXTERNALS</code></strong>.
      </p>


function_name: svn_cleanup
name: workingdir
type: string
description:
<p class="para">
       String path to local working directory to cleanup
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_commit
name: targets
type: array
description:
<p class="para">
       Array of local paths of files to be committed
      </p>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="simpara">
        This parameter must be an array, a string for a single
        target is not acceptable.
       </p>
      </div>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_commit
name: recursive
type: bool
description:
<p class="para">
       Boolean flag to disable recursive committing of
       directories in the <code class="parameter">targets</code> array.
       Default is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
      </p>


function_name: svn_delete
name: path
type: string
description:
<p class="para">
       Path of item to delete.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_delete
name: force
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the file will be deleted even if it has local modifications.
       Otherwise, local modifications will result in a failure. Default is
       <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      </p>


function_name: svn_diff
name: path1
type: string
description:
<p class="para">
       First path to diff. This can be a URL to a file/directory in an SVN
       repository or a local file/directory path.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>
      <div class="warning"><strong class="warning">Warning</strong>
       <p class="simpara">
        If a local file path has only backslashes and no forward slashes,
        this extension will fail to find the path. Always
        replace all backslashes with forward slashes when using this
        function.
       </p>
      </div>


function_name: svn_diff
name: rev1
type: int
description:
<p class="para">
       First path&#039;s revision number. Use <strong><code><a href="svn.constants.html#constant.svn-revision-head">SVN_REVISION_HEAD</a></code></strong>
       to specify the most recent revision.
      </p>


function_name: svn_diff
name: path2
type: string
description:
<p class="para">
       Second path to diff. See <code class="parameter">path1</code> for description.
      </p>


function_name: svn_diff
name: rev2
type: int
description:
<p class="para">
       Second path&#039;s revision number. See <code class="parameter">rev1</code>
       for description.
      </p>


function_name: svn_export
name: working_copy
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, it will export uncommitted files from the working copy.
      </p>


function_name: svn_import
name: path
type: string
description:
<p class="para">
       Path of file or directory to import.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_import
name: nonrecursive
type: bool
description:
<p class="para">
       Whether or not to refrain from recursively processing directories.
      </p>


function_name: svn_log
name: start_revision
type: int
description:
<p class="para">
       Revision number of the first log to retrieve. Use
       <strong><code><a href="svn.constants.html#constant.svn-revision-head">SVN_REVISION_HEAD</a></code></strong> to retrieve the log from
       the most recent revision.
      </p>


function_name: svn_log
name: end_revision
type: int
description:
<p class="para">
       Revision number of the last log to retrieve. Defaults to
       <code class="parameter">start_revision</code> if specified or to
       <strong><code>SVN_REVISION_INITIAL</code></strong> otherwise.
      </p>


function_name: svn_log
name: flags
type: int
initializer: SVN_DISCOVER_CHANGED_PATHS | SVN_STOP_ON_COPY
description:
<p class="para">
       Any combination of <strong><code>SVN_OMIT_MESSAGES</code></strong>,
       <strong><code>SVN_DISCOVER_CHANGED_PATHS</code></strong> and
       <strong><code>SVN_STOP_ON_COPY</code></strong>.
      </p>


function_name: svn_status
name: path
type: string
description:
<p class="para">
       Local path to file or directory to retrieve status of.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_status
name: flags
type: int
description:
<p class="para">
       Any combination of <strong><code>Svn::NON_RECURSIVE</code></strong>,
       <strong><code>Svn::ALL</code></strong> (regardless of modification status),
       <strong><code>Svn::SHOW_UPDATES</code></strong> (entries will be added for items
       that are out-of-date), <strong><code>Svn::NO_IGNORE</code></strong> (disregard
       <code class="literal">svn:ignore</code> properties when scanning for new files)
       and <strong><code>Svn::IGNORE_EXTERNALS</code></strong>.
      </p>


function_name: svn_update
name: path
type: string
description:
<p class="para">
       Path to local working copy.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">Relative paths will be resolved as if the current working directory was the one that contains the PHP binary. To use the calling script&#039;s working directory, use <span class="function">realpath</span> or dirname(__FILE__).</span></p></blockquote>


function_name: svn_update
name: revno
type: int
initializer: SVN_REVISION_HEAD
description:
<p class="para">
       Revision number to update to, default is <strong><code><a href="svn.constants.html#constant.svn-revision-head">SVN_REVISION_HEAD</a></code></strong>.
      </p>


function_name: tcpwrap_check
name: address
type: string
description:
<p class="para">
       The client remote address. Can be either an IP address or a domain name.
      </p>


function_name: tcpwrap_check
name: nodns
type: bool
description:
<p class="para">
       If <code class="parameter">address</code> looks like domain name then DNS is 
       used to resolve it to IP address; set <code class="parameter">nodns</code> to 
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to avoid this.
      </p>


function_name: VarnishAdmin.ban
name: vcl_regex
type: string
description:
<p class="para">
         Varnish VCL expression. It&#039;s based on the varnish ban command.
       </p>


function_name: VarnishAdmin.banUrl
name: vcl_regex
type: string
description:
<p class="para">
         URL regular expression in PCRE compatible syntax. It&#039;s based on the
         ban.url varnish command.
       </p>


function_name: VarnishAdmin.__construct
name: args
type: array
description:
<p class="para">
       Configuration arguments. The possible keys are:
<div class="cdata"><pre>
VARNISH_CONFIG_IDENT - local varnish instance ident
VARNISH_CONFIG_HOST - varnish instance ip
VARNISH_CONFIG_PORT - varnish instance port
VARNISH_CONFIG_SECRET - varnish instance secret
VARNISH_CONFIG_TIMEOUT - connection read timeout
VARNISH_CONFIG_COMPAT - varnish major version compatibility
</pre></div>
     </p>


function_name: VarnishStat.__construct
name: args
type: array
description:
<p class="para">
       Configuration arguments. The possible keys are:
<div class="cdata"><pre>
VARNISH_CONFIG_IDENT - local varnish instance ident path
</pre></div>
     </p>


function_name: yaz_addinfo
name: id
type: resource
description:
<p class="para">
       The connection resource returned by <span class="function">yaz_connect</span>.
      </p>


function_name: yaz_ccl_conf
name: config
type: array
description:
<p class="para">
       An array of configuration. Each key of the array is the name of a CCL
       field and the corresponding value holds a string that specifies a 
       mapping to RPN.
      </p>
      <p class="para">
       The mapping is a sequence of attribute-type, attribute-value pairs. 
       Attribute-type and attribute-value is separated by an equal sign 
       (<code class="literal">=</code>). Each pair is separated by white space.
      </p>
      <p class="para">
       Additional information can be found on the <a href="http://www.indexdata.dk/yaz/doc/tools.tkl#CCL" class="link external">&raquo;&nbsp;CCL</a> page.
      </p>


function_name: yaz_ccl_parse
name: result
type: array
description:
<p class="para">
          <code class="literal">errorpos</code> - approximate position in query of failure
          (integer is character position)
         </p>


function_name: yaz_connect
name: zurl
type: string
description:
<p class="para">
       A string that takes the form <code class="literal">host[:port][/database]</code>.
       If port is omitted, port 210 is used. If database is omitted 
       <code class="literal">Default</code> is used.
      </p>


function_name: yaz_connect
name: options
type: mixed
description:
<p class="para">
           An integer that specifies the maximum byte size of a single record
           to be returned by a target during retrieval. This
           entity is referred to as Exceptional-record-size in the
          <a href="http://www.loc.gov/z3950/agency/markup/04.html#3.2.1.1.4" class="link external">&raquo;&nbsp;Z39.50 standard</a>.
          </p>
          <blockquote class="note"><p><strong class="note">Note</strong>: 
           <p class="para">
            This option is supported in PECL YAZ 1.0.5 or later.
           </p>
          </p></blockquote>


function_name: yaz_database
name: databases
type: string
description:
<p class="para">
       A string containing one or more databases. Multiple databases are 
       separated by a plus sign <code class="literal">+</code>.
      </p>


function_name: yaz_element
name: elementset
type: string
description:
<p class="para">
       Most servers support <code class="literal">F</code> (for full records) and
       <code class="literal">B</code> (for brief records).
      </p>


function_name: yaz_es
name: type
type: string
description:
<p class="para">
       A string which represents the type of the Extended Service: 
       <code class="literal">itemorder</code> (Item Order),
       <code class="literal">create</code> (Create Database),
       <code class="literal">drop</code> (Drop Database),
       <code class="literal">commit</code> (Commit Operation),
       <code class="literal">update</code> (Update Record),
       <code class="literal">xmlupdate</code> (XML Update).
       Each type is specified in the following section.
      </p>


function_name: yaz_es
name: args
type: array
description:
<p class="para">
       An array with extended service options plus
       package specific options. The options are identical to
       those offered in the C API of ZOOM C. Refer to
       the ZOOM <a href="http://www.indexdata.dk/yaz/doc/zoom.tkl" class="link external">&raquo;&nbsp;Extended Services</a>.
      </p>


function_name: yaz_itemorder
name: args
type: array
description:
<p class="para">
       Must be an associative array with information about the Item Order 
       request to be sent. The key of the hash is the name of the 
       corresponding ASN.1 tag path. For example, the ISBN below the Item-ID
       has the key item-id,ISBN. 
      </p>
      <p class="para">
       The ILL-Request parameters are:
      </p>
      <pre class="literallayout">
protocol-version-num
transaction-id,initial-requester-id,person-or-institution-symbol,person
transaction-id,initial-requester-id,person-or-institution-symbol,institution
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution
transaction-id,transaction-group-qualifier
transaction-id,transaction-qualifier
transaction-id,sub-transaction-qualifier
service-date-time,this,date
service-date-time,this,time
service-date-time,original,date
service-date-time,original,time
requester-id,person-or-institution-symbol,person
requester-id,person-or-institution-symbol,institution
requester-id,name-of-person-or-institution,name-of-person
requester-id,name-of-person-or-institution,name-of-institution
responder-id,person-or-institution-symbol,person
responder-id,person-or-institution-symbol,institution
responder-id,name-of-person-or-institution,name-of-person
responder-id,name-of-person-or-institution,name-of-institution
transaction-type
delivery-address,postal-address,name-of-person-or-institution,name-of-person
delivery-address,postal-address,name-of-person-or-institution,name-of-institution
delivery-address,postal-address,extended-postal-delivery-address
delivery-address,postal-address,street-and-number
delivery-address,postal-address,post-office-box
delivery-address,postal-address,city
delivery-address,postal-address,region
delivery-address,postal-address,country
delivery-address,postal-address,postal-code
delivery-address,electronic-address,telecom-service-identifier
delivery-address,electronic-address,telecom-service-addreess
billing-address,postal-address,name-of-person-or-institution,name-of-person
billing-address,postal-address,name-of-person-or-institution,name-of-institution
billing-address,postal-address,extended-postal-delivery-address
billing-address,postal-address,street-and-number
billing-address,postal-address,post-office-box
billing-address,postal-address,city
billing-address,postal-address,region
billing-address,postal-address,country
billing-address,postal-address,postal-code
billing-address,electronic-address,telecom-service-identifier
billing-address,electronic-address,telecom-service-addreess
ill-service-type
requester-optional-messages,can-send-RECEIVED
requester-optional-messages,can-send-RETURNED
requester-optional-messages,requester-SHIPPED
requester-optional-messages,requester-CHECKED-IN
search-type,level-of-service
search-type,need-before-date
search-type,expiry-date
search-type,expiry-flag
place-on-hold
client-id,client-name
client-id,client-status
client-id,client-identifier
item-id,item-type
item-id,call-number
item-id,author
item-id,title
item-id,sub-title
item-id,sponsoring-body
item-id,place-of-publication
item-id,publisher
item-id,series-title-number
item-id,volume-issue
item-id,edition
item-id,publication-date
item-id,publication-date-of-component
item-id,author-of-article
item-id,title-of-article
item-id,pagination
item-id,ISBN
item-id,ISSN
item-id,additional-no-letters
item-id,verification-reference-source
copyright-complicance
retry-flag
forward-flag
requester-note
forward-note
      </pre>
      <p class="para">
       There are also a few parameters that are part of the Extended
       Services Request package and the ItemOrder package:
      </p>
      <pre class="literallayout">
package-name
user-id
contact-name
contact-phone
contact-email
itemorder-item
      </pre>


function_name: yaz_range
name: start
type: int
description:
<p class="para">
       Specifies the position of the first record to be retrieved. The 
       records numbers goes from 1 to <span class="function">yaz_hits</span>.
      </p>


function_name: yaz_record
name: pos
type: int
description:
<p class="para">
       The record position. Records positions in a result set are numbered 1,
       2, ... $hits where $hits is the count returned by <span class="function">yaz_hits</span>.
      </p>


function_name: yaz_record
name: type
type: string
description:
<p class="para">
          The record is returned as an XML string if possible.
          In this mode, all MARC records are converted to 
          <a href="http://www.loc.gov/standards/marcxml/" class="link external">&raquo;&nbsp;MARCXML</a>.
          XML records and SUTRS are returned in their original format.
          GRS-1 is not supported.
         </p>
         <p class="para">
          This format is similar to <code class="parameter">string</code> except that
          MARC records are converted to MARCXML
         </p>
         <p class="para">
          This format is suitable if records are processed by an XML parser
          or XSLT processor afterwards.
         </p>


function_name: yaz_scan
name: type
type: string
description:
<p class="para">
       Currently only type <code class="literal">rpn</code> is supported.
      </p>


function_name: yaz_scan
name: startterm
type: string
description:
<p class="para">
       Starting term point for the scan.
      </p>
      <p class="para">
       The form in which the starting term is specified is given by parameter
       <code class="parameter">type</code>.
      </p>
      <p class="para">
       The syntax this parameter is similar to the RPN query as described in
       <span class="function">yaz_search</span>. It consists of zero or more 
       <code class="literal">@attr</code>-operator specifications, then followed by 
       exactly one token.
      </p>


function_name: yaz_scan
name: flags
type: array
description:
<p class="para">
       This optional parameter specifies additional information to control 
       the behaviour of the scan request. Three indexes are currently read 
       from the flags array:
       <code class="literal">number</code> (number of terms requested),
       <code class="literal">position</code> (preferred position of term) and
       <code class="literal">stepSize</code> (preferred step size).
      </p>


function_name: yaz_schema
name: schema
type: string
description:
<p class="para">
       Must be specified as an OID (Object Identifier) in a raw dot-notation 
       (like <code class="literal">1.2.840.10003.13.4</code>) or as one of the known 
       registered schemas: <code class="literal">GILS-schema</code>, 
       <code class="literal">Holdings</code>, <code class="literal">Zthes</code>, ...
      </p>


function_name: yaz_search
name: type
type: string
description:
<p class="para">
       This parameter represents the query type - only <code class="literal">&quot;rpn&quot;</code>
       is supported now in which case the third argument specifies a Type-1 
       query in prefix query notation. 
      </p>


function_name: yaz_search
name: query
type: string
description:
<p class="para">
       The RPN query is a textual representation of the Type-1 query as
       defined by the Z39.50 standard. However, in the text representation
       as used by YAZ a prefix notation is used, that is the operator
       precedes the operands. The query string is a sequence of tokens where
       white space is ignored unless surrounded by double quotes. Tokens beginning
       with an at-character (<code class="literal">@</code>) are considered operators,
       otherwise they are treated as search terms.
      </p>
      <table class="doctable table">
       <caption><strong>RPN Operators</strong></caption>
       
        <col width="1*" />
        <col width="2*" />
        <thead>
         <tr>
          <th>Construct</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><code class="literal">@and</code> query1 query2</td>
          <td>intersection of query1 and query2</td>
         </tr>

         <tr>
          <td><code class="literal">@or</code> query1 query2</td>
          <td>union of query1 and query2</td>
         </tr>

         <tr>
          <td><code class="literal">@not</code> query1 query2</td>
          <td>query1 and not query2</td>
         </tr>

         <tr>
          <td><code class="literal">@set</code> name</td>
          <td>result set reference</td>
         </tr>

         <tr>
          <td><code class="literal">@attrset</code> set query</td>
          <td>
           specifies attribute-set for query. This construction is only allowed
           once - in the beginning of the whole query
          </td>
         </tr>

         <tr>
          <td><code class="literal">@attr</code> [set] type=value query</td>
          <td>
           applies attribute to query. The type and value are integers 
           specifying the attribute-type and attribute-value respectively. 
           The set, if given, specifies the attribute-set.
          </td>
         </tr>

        </tbody>
       
      </table>
     
      <p class="para">
       You can find information about attributes at the 
       <a href="http://www.loc.gov/z3950/agency/defns/bib1.html" class="link external">&raquo;&nbsp;Z39.50 Maintenance Agency</a>
       site.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If you would like to use a more friendly notation,
        use the CCL parser - functions <span class="function">yaz_ccl_conf</span> and 
        <span class="function">yaz_ccl_parse</span>.
       </p>
      </p></blockquote>


function_name: yaz_set_option
name: value
type: string
description:
<p class="para">
       The new value of the option. Use this only if the previous argument is
       a string.
      </p>


function_name: yaz_set_option
name: options
type: array
description:
<p class="para">
       May be either a string or an array.
      </p>
      <p class="para">
       If given as a string, this will be the name of the option to set. You&#039;ll
       need to give it&#039;s <code class="parameter">value</code>.
      </p>
      <p class="para">
       If given as an array, this will be an associative array (option name 
       =&gt; option value).
      </p>
      <table class="doctable table">
       <caption><strong>PHP/YAZ Connection Options</strong></caption>
       
        <col width="2*" />
        <col width="5*" />
        <thead>
         <tr>
          <th>Name</th>
          <th>Description</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td>implementationName</td>
          <td>implementation name of server</td>
         </tr>

         <tr>
          <td>implementationVersion</td>
          <td>implementation version of server</td>
         </tr>

         <tr>
          <td>implementationId</td>
          <td>implementation ID of server</td>
         </tr>

         <tr>
          <td>schema</td>
          <td>
           schema for retrieval. By default, no schema is used. Setting this
           option is equivalent to using function 
           <span class="function">yaz_schema</span>
          </td>
         </tr>

         <tr>
          <td>preferredRecordSyntax</td>
          <td>
           record syntax for retrieval. By default, no syntax is used. Setting
           this option is equivalent to using function 
           <span class="function">yaz_syntax</span>
          </td>
         </tr>

         <tr>
          <td>start</td>
          <td>
           offset for first record to be retrieved via 
           <span class="function">yaz_search</span> or <span class="function">yaz_present</span>.
           First record is numbered has a start value of 0. Second record has
           start value 1.
           Setting this option in combination with option
           <code class="literal">count</code> has the same effect as calling
           <span class="function">yaz_range</span> except that records are
           numbered from 1 in <span class="function">yaz_range</span>
          </td>
         </tr>

         <tr>
          <td>count</td>
          <td>maximum number of records to be retrieved via
           <span class="function">yaz_search</span> or <span class="function">yaz_present</span>.
          </td>
         </tr>

         <tr>
          <td>elementSetName</td>
          <td>element-set-name for retrieval. Setting this option is
           equivalent to calling <span class="function">yaz_element</span>.
          </td>
         </tr>

        </tbody>
       
      </table>


function_name: yaz_syntax
name: syntax
type: string
description:
<p class="para">
       The syntax must be specified as an OID (Object Identifier) in a raw
       dot-notation (like <code class="literal">1.2.840.10003.5.10</code>) or as one of
       the known registered record syntaxes (sutrs, usmarc, grs1, xml, etc.). 
      </p>


function_name: ZMQContext.__construct
name: is_persistent
type: bool
description:
<p class="para">
       Whether the context is persistent. Persistent context is stored
       over multiple requests and is a requirement for persistent sockets.
      </p>


function_name: ZMQContext.getOpt
name: key
type: string
description:
<p class="para">
       An integer representing the option.
       See the <strong><code>ZMQ::CTXOPT_*</code></strong> constants.
      </p>


function_name: ZMQContext.getSocket
name: type
type: int
description:
<p class="para">
       <strong><code>ZMQ::SOCKET_*</code></strong> constant to specify socket type.
      </p>


function_name: ZMQContext.getSocket
name: persistent_id
type: string
description:
<p class="para">
       If <code class="parameter">persistent_id</code> is specified the socket will be persisted over multiple requests.
      </p>


function_name: ZMQContext.getSocket
name: on_new_socket
type: callable
description:
<p class="para">
       Callback function, which is executed when a new socket structure is created. This function does not get invoked
       if the underlying persistent connection is re-used. The callback takes ZMQSocket and persistent_id as two arguments.
      </p>


function_name: ZMQContext.setOpt
name: key
type: int
description:
<p class="para">
       One of the <strong><code>ZMQ::CTXOPT_*</code></strong> constants.
      </p>


function_name: ZMQSocket.bind
name: dsn
type: string
description:
<p class="para">
       The bind dsn, for example <code class="literal">transport://address</code>.
      </p>


function_name: ZMQSocket.bind
name: force
type: bool
description:
<p class="para">
       Tries to bind even if the socket has already been bound to the given endpoint.
      </p>


function_name: ZMQSocket.connect
name: dsn
type: string
description:
<p class="para">
       The connect dsn, for example <code class="literal">transport://address</code>.
      </p>


function_name: ZMQSocket.connect
name: force
type: bool
description:
<p class="para">
       Tries to connect even if the socket has already been connected to given endpoint.
      </p>


function_name: ZMQSocket.__construct
name: type
type: int
description:
<p class="para">
       The socket type. See <strong><code>ZMQ::SOCKET_*</code></strong> constants.
      </p>


function_name: ZMQSocket.__construct
name: persistent_id
type: string
description:
<p class="para">
       If <code class="parameter">persistent_id</code> is specified the socket will be persisted over multiple requests.
       If <code class="parameter">context</code> is not persistent the socket falls back to non-persistent mode.
      </p>


function_name: ZMQSocket.__construct
name: on_new_socket
type: callable
description:
<p class="para">
       Callback function, which is executed when a new socket structure is created. This function does not get invoked
       if the underlying persistent connection is re-used.
      </p>
      <div class="methodsynopsis dc-description"> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">ZMQSocket</span> <code class="parameter">$socket</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$persistent_id</code><span class="initializer"> = <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong></span></span>)</div>


function_name: ZMQSocket.getSockOpt
name: key
type: string
description:
<p class="para">
       An integer representing the option.
       See the <strong><code>ZMQ::SOCKOPT_*</code></strong> constants.
      </p>


function_name: ZMQSocket.recv
name: mode
type: int
description:
<p class="para">
       Pass mode flags to receive multipart messages or non-blocking operation. 
       See <strong><code>ZMQ::MODE_*</code></strong> constants.
      </p>


function_name: ZMQSocket.setSockOpt
name: key
type: int
description:
<p class="para">
       One of the <strong><code>ZMQ::SOCKOPT_*</code></strong> constants.
      </p>


function_name: ZMQSocket.unbind
name: dsn
type: string
description:
<p class="para">
       The previously bound dsn, for example <code class="literal">transport://address</code>.
      </p>


function_name: ZMQPoll.add
name: type
type: int
description:
<p class="para">
       Defines what activity the socket is polled for. 
       See <strong><code><a href="class.zmq.html#zmq.constants.poll-in">ZMQ::POLL_IN</a></code></strong> and <strong><code><a href="class.zmq.html#zmq.constants.poll-out">ZMQ::POLL_OUT</a></code></strong> constants.
      </p>


function_name: ZMQPoll.poll
name: readable
type: array
description:
<p class="para">
       Array where readable ZMQSockets/PHP streams are returned. The array
       will be cleared at the beginning of the operation.
      </p>


function_name: ZMQPoll.poll
name: writable
type: array
description:
<p class="para">
       Array where writable ZMQSockets/PHP streams are returned. The array
       will be cleared at the beginning of the operation.
      </p>


function_name: ZMQPoll.poll
name: timeout
type: int
initializer: -1
description:
<p class="para">
       Timeout for the operation. -1 means that poll waits until
       at least one item has activity. Please note that starting from 
       version 1.0.0 the poll timeout is defined in milliseconds, rather
       than microseconds.
      </p>


function_name: ZMQPoll.remove
name: item
type: mixed
description:
<p class="para">
       The ZMQSocket object, PHP stream or <span class="type">string</span> id of the item.
      </p>


function_name: ZMQDevice.__construct
name: frontend
type: ZMQSocket
description:
<p class="para">
      Frontend parameter for the devices. Usually where there messages
      are coming.
     </p>


function_name: ZMQDevice.__construct
name: backend
type: ZMQSocket
description:
<p class="para">
       Backend parameter for the devices. Usually where there messages
       going to.
     </p>


function_name: ZMQDevice.__construct
name: listener
type: ZMQSocket
description:
<p class="para">
       Listener socket, which receives a copy of all messages going both directions.
       The type of this socket should be SUB, PULL or DEALER.
     </p>


function_name: ZMQDevice.setIdleCallback
name: cb_func
type: callable
description:
<p class="para">
      Callback function to invoke when the device is idle. Returning false
      or a value that evaluates to false from this function will cause the 
      device to stop.
     </p>


function_name: ZMQDevice.setIdleCallback
name: timeout
type: int
description:
<p class="para">
      How often to invoke the idle callback in milliseconds. The idle callback is invoked
      periodically when there is no activity on the device.
      The timeout value guarantees that there is at least this amount of milliseconds between
      invocations of the callback function.
     </p>


function_name: Zookeeper.addAuth
name: scheme
type: string
description:
<p class="para">
      The id of authentication scheme. Natively supported: &quot;digest&quot; password-based authentication
     </p>


function_name: Zookeeper.addAuth
name: completion_cb
type: callable
description:
<p class="para">
      The routine to invoke when the request completes. One of the following result codes may be passed into the completion callback:
      - ZOK operation completed successfully
      - ZAUTHFAILED authentication failed
     </p>


function_name: Zookeeper.connect
name: host
type: string
description:
<p class="para">
      Comma separated host:port pairs, each corresponding to a zk server. e.g. &quot;127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002&quot;
     </p>


function_name: Zookeeper.connect
name: watcher_cb
type: callable
description:
<p class="para">
      The global watcher callback function. When notifications are triggered this function will be invoked.
     </p>


function_name: Zookeeper.connect
name: recv_timeout
type: int
initializer: 10000
description:
<p class="para">
      The timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE).
     </p>


function_name: Zookeeper.__construct
name: host
type: string
initializer: ''
description:
<p class="para">
      comma separated host:port pairs, each corresponding to a zk server. e.g. &quot;127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002&quot;
     </p>


function_name: Zookeeper.__construct
name: watcher_cb
type: callable
description:
<p class="para">
      the global watcher callback function. When notifications are triggered this function will be invoked.
     </p>


function_name: Zookeeper.__construct
name: recv_timeout
type: int
initializer: 10000
description:
<p class="para">
      the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE).
     </p>


function_name: Zookeeper.create
name: path
type: string
description:
<p class="para">
      The name of the node. Expressed as a file name with slashes separating ancestors of the node.
     </p>


function_name: Zookeeper.create
name: flags
type: int
description:
<p class="para">
      this parameter can be set to 0 for normal create or an OR of the Create Flags
     </p>


function_name: Zookeeper.delete
name: version
type: int
initializer: -1
description:
<p class="para">
      The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.
     </p>


function_name: Zookeeper.exists
name: watcher_cb
type: callable
description:
<p class="para">
      if nonzero, a watch will be set at the server to notify the client if the node changes. The watch will be set even if the node does not
     </p>


function_name: Zookeeper.get
name: watcher_cb
type: callable
description:
<p class="para">
      If nonzero, a watch will be set at the server to notify the client if the node changes.
     </p>


function_name: Zookeeper.get
name: max_size
type: int
description:
<p class="para">
      Max size of the data. If 0 is used, this method will return the whole data.
     </p>


function_name: Zookeeper.setWatcher
name: watcher_cb
type: callable
description:
<p class="para">
      A watch will be set at the server to notify the client if the node changes.
     </p>


function_name: ZookeeperConfig.add
name: members
type: string
description:
<p class="para">
      Comma separated list of servers to be added to the ensemble. Each has a configuration line for a server to be added (as would appear in a
 configuration file), only for maj. quorums.
     </p>


function_name: ZookeeperConfig.remove
name: id_list
type: string
description:
<p class="para">
      Comma separated list of server IDs to be removed from the ensemble. Each has an id of a server to be removed, only for maj. quorums.
     </p>


function_name: ZookeeperConfig.set
name: members
type: string
description:
<p class="para">
      Comma separated list of new membership (e.g., contents of a membership configuration file) - for use only with a non-incremental reconfiguration.
     </p>


function_name: SolrInputDocument.addChildDocuments
name: docs
type: array
description:
<p class="para">
      An <span class="type">array</span> of <span class="type">SolrInputDocument</span> objects.
     </p>


function_name: SolrInputDocument.addField
name: fieldBoostValue
type: float
initializer: 0.0
description:
<p class="para">
      The index time boost for the field. Though this cannot be negative, you can still pass values less than 1.0 but they must be greater than zero.
      </p>


function_name: SolrInputDocument.merge
name: overwrite
type: bool
description:
<p class="para">
       If this is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> it will replace matching fields in the destination document.
      </p>


function_name: SolrDocument.merge
name: overwrite
type: bool
description:
<p class="para">
      If this is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> then fields with the same name in the destination document will be overwritten.
      </p>


function_name: SolrClient.addDocument
name: overwrite
type: bool
description:
<p class="para">
       Whether to overwrite existing document or not. If <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> there will be duplicates (several documents with the same ID).
        
      </p>
        <div class="warning"><strong class="warning">Warning</strong>
            <p class="para">
              PECL Solr &lt; 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite bool flag.
            </p>
            <p class="para">
              $allowDups = false is the same as $overwrite = true
            </p>
        </div>


function_name: SolrClient.addDocument
name: commitWithin
type: int
description:
<p class="para">
        Number of milliseconds within which to auto commit this document. Available since Solr 1.4 . Default (0) means disabled.
      </p>
      <p class="para">
        When this value specified, it leaves the control of when to do the commit
        to Solr itself, optimizing number of commits to a minimum while still
        fulfilling
        the update latency requirements, and Solr will automatically do a commit
        when the oldest add in the buffer is due.
       </p>


function_name: SolrClient.addDocuments
name: docs
type: array
description:
<p class="para">
       An array containing the collection of SolrInputDocument instances. This array must be an actual variable.
      </p>


function_name: SolrClient.addDocuments
name: overwrite
type: bool
description:
<p class="para">
       Whether to overwrite existing documents or not. If <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> there will be duplicates (several documents with the same ID).
        
      </p>
        <div class="warning"><strong class="warning">Warning</strong>
            <p class="para">
              PECL Solr &lt; 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite bool flag.
            </p>
            <p class="para">
              $allowDups = false is the same as $overwrite = true
            </p>
        </div>


function_name: SolrClient.commit
name: softCommit
type: bool
description:
<p class="para">
       This will refresh the &#039;view&#039; of the index in a more performant manner, but without &quot;on-disk&quot; guarantees. (Solr4.0+)
      </p>
      <p class="para">
          A soft commit is much faster since it only makes index changes visible and does not fsync index files or write a new index descriptor. 
          If the JVM crashes or there is a loss of power, changes that occurred after the last hard commit will be lost. 
          Search collections that have near-real-time requirements (that want index changes to be quickly visible to searches) will want to soft commit often but hard commit less frequently. 
      </p>


function_name: SolrClient.commit
name: waitSearcher
type: bool
description:
<p class="para">
       block until a new searcher is opened and registered as the main query searcher, making the changes visible. 
      </p>


function_name: SolrClient.__construct
name: clientOptions
type: array
description:
<p class="para">
       This is an array containing one of the following keys :
      </p>
      <p class="para">
       
<div class="cdata"><pre>
 - secure          (Boolean value indicating whether or not to connect in secure mode)
 - hostname        (The hostname for the Solr server)
 - port            (The port number)
 - path            (The path to solr)
 - wt              (The name of the response writer e.g. xml, json)
 - login           (The username used for HTTP Authentication, if any)
 - password        (The HTTP Authentication password)
 - proxy_host      (The hostname for the proxy server, if any)
 - proxy_port      (The proxy port)
 - proxy_login     (The proxy username)
 - proxy_password  (The proxy password)
 - timeout         (This is maximum time in seconds allowed for the http data transfer operation. Default is 30 seconds)
 - ssl_cert        (File name to a PEM-formatted file containing the private key + private certificate (concatenated in that order) )
 - ssl_key         (File name to a PEM-formatted private key file only)
 - ssl_keypassword (Password for private key)
 - ssl_cainfo      (Name of file holding one or more CA certificates to verify peer with)
 - ssl_capath      (Name of directory holding multiple CA certificates to verify peer with )
 
 Please note the if the ssl_cert file only contains the private certificate, you have to specify a separate ssl_key file
 
 The ssl_keypassword option is required if the ssl_cert or ssl_key options are set.
 
</pre></div>
      </p>


function_name: SolrClient.deleteByIds
name: ids
type: array
description:
<p class="para">
       An array of IDs representing the uniqueKey field declared in the schema for each document to be deleted. This must be an actual php variable.
      </p>


function_name: SolrClient.optimize
name: maxSegments
type: int
initializer: 1
description:
<p class="para">
       Optimizes down to at most this number of segments. Since Solr 1.3
      </p>


function_name: SolrClient.optimize
name: softCommit
type: bool
description:
<p class="para">
       This will refresh the &#039;view&#039; of the index in a more performant manner, but without &quot;on-disk&quot; guarantees. (Solr4.0+)
      </p>


function_name: SolrClient.optimize
name: waitSearcher
type: bool
description:
<p class="para">
       Block until a new searcher is opened and registered as the main query searcher, making the changes visible. 
      </p>


function_name: SolrClient.query
name: query
type: SolrParams
description:
<p class="para">
       A <span class="type">SolrParams</span> object. It is recommended to use <span class="type">SolrQuery</span> for advanced queries.
      </p>


function_name: SolrClient.setResponseWriter
name: responseWriter
type: string
description:
<p class="para">One of the following:</p>
      <ul class="simplelist">
       <li><code class="literal">json</code></li>
       <li><code class="literal">phps</code></li>
       <li><code class="literal">xml</code></li>
      </ul>


function_name: SolrClient.setServlet
name: type
type: int
description:
<p class="para">One of the following :</p>
      <p class="para">
<div class="cdata"><pre>
 - SolrClient::SEARCH_SERVLET_TYPE
 - SolrClient::UPDATE_SERVLET_TYPE
 - SolrClient::THREADS_SERVLET_TYPE
 - SolrClient::PING_SERVLET_TYPE
 - SolrClient::TERMS_SERVLET_TYPE
</pre></div>
      </p>


function_name: SolrResponse.setParseMode
name: parser_mode
type: int
description:
<p class="para">
       SolrResponse::PARSE_SOLR_DOC parses documents in SolrDocument instances. SolrResponse::PARSE_SOLR_OBJ parses document into SolrObjects.
      </p>


function_name: SolrQuery.addExpandSortField
name: order
type: string
description:
<p class="para">
      Order ASC/DESC, utilizes SolrQuery::ORDER_* constants.
     </p>
     <p class="para">
         Default: <span class="type">SolrQuery::ORDER_DESC</span>
     </p>


function_name: SolrQuery.addSortField
name: order
type: int
initializer: SolrQuery::ORDER_DESC
description:
<p class="para">
       The sort direction. This should be either SolrQuery::ORDER_ASC or SolrQuery::ORDER_DESC.
      </p>


function_name: SolrQuery.setEchoHandler
name: flag
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      </p>


function_name: SolrQuery.setFacetMissing
name: flag
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> turns this feature on. <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> disables it.
      </p>


function_name: SolrQuery.setFacetSort
name: facetSort
type: int
description:
<p class="para">
       Use SolrQuery::FACET_SORT_INDEX for sorting by index order or SolrQuery::FACET_SORT_COUNT for sorting by count.
      </p>


function_name: SolrQuery.setGroupMain
name: value
type: string
description:
<p class="para">
      If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the result of the first field grouping command is used as the main result list in the response.
     </p>


function_name: SolrQuery.setHighlightFragmenter
name: fragmenter
type: string
description:
<p class="para">
       The standard fragmenter is gap. Another option is regex, which tries to create fragments that resembles a certain regular expression
      </p>


function_name: SolrQuery.setHighlightFragsize
name: size
type: int
description:
<p class="para">
       The size, in characters, of fragments to consider for highlighting
      </p>


function_name: SolrQuery.setHighlightHighlightMultiTerm
name: flag
type: bool
description:
<p class="para">
       Whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the document.
      </p>


function_name: SolrQuery.setHighlightMaxAnalyzedChars
name: value
type: int
description:
<p class="para">
       The number of characters into a document to look for suitable snippets
      </p>


function_name: SolrQuery.setHighlightRegexMaxAnalyzedChars
name: maxAnalyzedChars
type: int
description:
<p class="para">
       The maximum number of characters to analyze from a field when using the regex fragmenter
      </p>


function_name: SolrQuery.setHighlightRegexPattern
name: value
type: string
description:
<p class="para">
       The regular expression for fragmenting. This could be used to extract sentences
      </p>


function_name: SolrQuery.setHighlightRegexSlop
name: factor
type: float
description:
<p class="para">
       The factor by which the regex fragmenter can stray from the ideal fragment size
      </p>


function_name: SolrQuery.setHighlightSimplePost
name: simplePost
type: string
description:
<p class="para">
       Sets the text which appears after a highlighted term
      </p>
      <p class="para"><div class="cdata"><pre> The default is &lt;/em&gt; </pre></div></p>


function_name: SolrQuery.setMlt
name: flag
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> enables it and <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> turns it off.
      </p>


function_name: SolrQuery.setMltMaxNumQueryTerms
name: value
type: int
description:
<p class="para">
       The maximum number of query terms that will be included in any generated query
      </p>


function_name: SolrQuery.setMltMinDocFrequency
name: minDocFrequency
type: int
description:
<p class="para">
       Sets the frequency at which words will be ignored which do not occur in at least this many docs.
      </p>


function_name: SolrQuery.setMltMinTermFrequency
name: minTermFrequency
type: int
description:
<p class="para">
       The frequency below which terms will be ignored in the source docs
      </p>


function_name: SolrQuery.setOmitHeader
name: flag
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> excludes the header from the result.
      </p>


function_name: SolrQuery.setShowDebugInfo
name: flag
type: bool
description:
<p class="para">
       Whether to show debug info. <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      </p>


function_name: SolrQuery.setStats
name: flag
type: bool
description:
<p class="para">
      <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> turns on the stats component and <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> disables it.
      </p>


function_name: SolrQuery.setTerms
name: flag
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> enables it. <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> turns it off
      </p>


function_name: SolrQuery.setTermsIncludeUpperBound
name: flag
type: bool
description:
<p class="para">
      <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>
      </p>


function_name: SolrQuery.setTermsLimit
name: limit
type: int
description:
<p class="para">
       The maximum number of terms to return. All the terms will be returned if the limit is negative.
      </p>


function_name: SolrDisMaxQuery.setTieBreaker
name: tieBreaker
type: string
description:
<p class="para">
        The <em>tie</em> parameter specifies a float value (which should be something much less than 1) to use as tiebreaker in DisMax queries.
     </p>


function_name: SolrDisMaxQuery.setUserFields
name: fields
type: string
description:
<p class="para">
        Fields names separated by space
     </p>
     <p class="para">
        This parameter supports wildcards. 
     </p>


function_name: SolrCollapseFunction.__construct
name: field
type: string
description:
<p class="para">
        The field name to collapse on.
     </p>
     <p class="para">
        In order to collapse a result. The field type must be a single valued String, Int or Float.
     </p>


function_name: SolrCollapseFunction.setHint
name: hint
type: string
description:
<p class="para">
      Currently there is only one hint available &quot;top_fc&quot;, which stands for top level FieldCache
     </p>


function_name: apache_getenv
name: walk_to_top
type: bool
description:
<p class="para">
       Whether to get the top-level variable available to all Apache layers.
      </p>


function_name: apache_setenv
name: walk_to_top
type: bool
description:
<p class="para">
       Whether to set the top-level variable available to all Apache layers.
      </p>


function_name: session_cache_expire
name: value
type: null
description:
<p class="para">
       If <code class="parameter">value</code> is given and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the current cache
       expire is replaced with <code class="parameter">value</code>.
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <span class="simpara">
         Setting <code class="parameter">value</code> is of value only, if
         <code class="literal">session.cache_limiter</code> is set to a value
         <em>different</em> from <code class="literal">nocache</code>.
        </span>
       </p></blockquote>
      </p>


function_name: session_cache_limiter
name: value
type: null
description:
<p class="para">
       If <code class="parameter">value</code> is specified and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the name of the
       current cache limiter is changed to the new value.
      </p>
      <table class="doctable table">
       <caption><strong>Possible values</strong></caption>
       
        <thead>
         <tr>
          <th>Value</th>
          <th>Headers sent</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td><code class="literal">public</code></td>
          <td>
           <div class="example-contents">
<div class="headercode"><pre class="headercode">Expires: (sometime in the future, according session.cache_expire)
Cache-Control: public, max-age=(sometime in the future, according to session.cache_expire)
Last-Modified: (the timestamp of when the session was last saved)</pre>
</div>
           </div>

          </td>
         </tr>

         <tr>
          <td><code class="literal">private_no_expire</code></td>
          <td>
           <div class="example-contents">
<div class="headercode"><pre class="headercode">Cache-Control: private, max-age=(session.cache_expire in the future), pre-check=(session.cache_expire in the future)
Last-Modified: (the timestamp of when the session was last saved)</pre>
</div>
           </div>

          </td>
         </tr>

         <tr>
          <td><code class="literal">private</code></td>
          <td>
           <div class="example-contents">
<div class="headercode"><pre class="headercode">Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private, max-age=(session.cache_expire in the future), pre-check=(session.cache_expire in the future)
Last-Modified: (the timestamp of when the session was last saved)</pre>
</div>
           </div>

          </td>
         </tr>

         <tr>
          <td><code class="literal">nocache</code></td>
          <td>
           <div class="example-contents">
<div class="headercode"><pre class="headercode">Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache</pre>
</div>
           </div>

          </td>
         </tr>

        </tbody>
       
      </table>


function_name: session_create_id
name: prefix
type: string
initializer: ""
description:
<p class="para">
        If <code class="parameter">prefix</code> is specified, new session id
        is prefixed by <code class="parameter">prefix</code>. Not all
        characters are allowed within the session id.  Characters in
        the range <code class="literal">a-z A-Z 0-9 , (comma) and -
        (minus)</code> are allowed.
       </p>


function_name: session_id
name: id
type: null
description:
<p class="para">
        If <code class="parameter">id</code> is specified and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, it will replace the current
        session id. <span class="function">session_id</span> needs to be called before
        <span class="function">session_start</span> for that purpose. Depending on the
        session handler, not all characters are allowed within the session id.
        For example, the file session handler only allows characters in the
        range <code class="literal">a-z A-Z 0-9 , (comma) and - (minus)</code>!
       </p>
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <span class="simpara">
         When using session cookies, specifying an <code class="parameter">id</code>
         for <span class="function">session_id</span> will always send a new cookie
         when <span class="function">session_start</span> is called, regardless if the
         current session id is identical to the one being set.
        </span>
       </p></blockquote>


function_name: session_module_name
name: module
type: null
description:
<p class="para">
       If <code class="parameter">module</code> is specified and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, that module will be
       used instead.
       Passing <code class="literal">&quot;user&quot;</code> to this parameter is forbidden. Instead
       <span class="function">session_set_save_handler</span> has to be called to set a user
       defined session handler.
      </p>


function_name: session_name
name: name
type: null
description:
<p class="para">
       The session name references the name of the session, which is 
       used in cookies and URLs (e.g. <code class="literal">PHPSESSID</code>). It
       should contain only alphanumeric characters; it should be short and
       descriptive (i.e. for users with enabled cookie warnings).
       If <code class="parameter">name</code> is specified and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the name of the current
       session is changed to its value.
      </p>
      <p class="para">
       <div class="warning"><strong class="warning">Warning</strong>
        <p class="para">
         The session name can&#039;t consist of digits only, at least one letter
         must be present. Otherwise a new session id is generated every time.
        </p>
       </div>
      </p>


function_name: session_regenerate_id
name: delete_old_session
type: bool
description:
<p class="para">
        Whether to delete the old associated session file or not.
        You should not delete old session if you need to avoid
        races caused by deletion or detect/avoid session hijack
        attacks.
       </p>


function_name: session_save_path
name: path
type: null
description:
<p class="para">
       Session data path. If specified and not <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the path to which data is saved will
       be changed. <span class="function">session_save_path</span> needs to be called
       before <span class="function">session_start</span> for that purpose.
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         On some operating systems, you may want to specify a path on a
         filesystem that handles lots of small files efficiently. For example,
         on Linux, reiserfs may provide better performance than ext2fs.
        </p>
       </p></blockquote>
      </p>


function_name: session_set_cookie_params
name: lifetime_or_options
type: array
description:
<p class="para">
       When using the first signature, <a href="session.configuration.html#ini.session.cookie-lifetime" class="link">lifetime</a> of the
       session cookie, defined in seconds.
      </p>
      <p class="para">
       When using the second signature,
       an associative <span class="type">array</span> which may have any of the keys
       <code class="literal">lifetime</code>, <code class="literal">path</code>, <code class="literal">domain</code>,
       <code class="literal">secure</code>, <code class="literal">httponly</code> and <code class="literal">samesite</code>.
       The values have the same meaning as described for the parameters with the
       same name. The value of the <code class="literal">samesite</code> element should be
       either <code class="literal">Lax</code> or <code class="literal">Strict</code>.
       If any of the allowed options are not given, their default values are the
       same as the default values of the explicit parameters. If the
       <code class="literal">samesite</code> element is omitted, no SameSite cookie
       attribute is set.
      </p>


function_name: session_set_cookie_params
name: path
type: null
description:
<p class="para">
       <a href="session.configuration.html#ini.session.cookie-path" class="link">Path</a> on the domain where
       the cookie will work. Use a single slash (&#039;/&#039;) for all paths on the
       domain.
      </p>


function_name: session_set_cookie_params
name: domain
type: null
description:
<p class="para">
       Cookie <a href="session.configuration.html#ini.session.cookie-domain" class="link">domain</a>, for
       example &#039;www.php.net&#039;. To make cookies visible on all subdomains then
       the domain must be prefixed with a dot like &#039;.php.net&#039;.
      </p>


function_name: session_set_cookie_params
name: secure
type: null
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> cookie will only be sent over
       <a href="session.configuration.html#ini.session.cookie-secure" class="link">secure</a> connections.
      </p>


function_name: session_set_cookie_params
name: httponly
type: null
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> then PHP will attempt to send the
       <a href="session.configuration.html#ini.session.cookie-httponly" class="link">httponly</a>
       flag when setting the session cookie.
      </p>


function_name: session_set_save_handler
name: open
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">open</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$savePath</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$sessionName</code></span>)</div>

      </p>
      <p class="para">
       The open callback works like a constructor in classes and is
       executed when the session is being opened.  It is the first callback
       function executed when the session is started automatically or
       manually with <span class="function">session_start</span>.
       Return value is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for success, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for failure.
      </p>


function_name: session_set_save_handler
name: close
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">close</span></span>()</div>

      </p>
      <p class="para">
       The close callback works like a destructor in classes and is
       executed after the session write callback has been called. It is also invoked when
       <span class="function">session_write_close</span> is called.
       Return value should be <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for success, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for failure.
      </p>


function_name: session_set_save_handler
name: read
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">string</span> <span class="methodname"><span class="replaceable">read</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$sessionId</code></span>)</div>

      </p>
      <p class="para">
       The <code class="parameter">read</code> callback must always return a session encoded (serialized)
       string, or an empty string if there is no data to read.
      </p>
      <p class="para">
       This callback is called internally by PHP when the session starts or
       when <span class="function">session_start</span> is called.  Before this callback is invoked
       PHP will invoke the <code class="parameter">open</code> callback.
      </p>
      <p class="para">
       The value this callback returns must be in exactly the same serialized format that was originally
       passed for storage to the <code class="parameter">write</code> callback.  The value returned will be
       unserialized automatically by PHP and used to populate the <var class="varname">$_SESSION</var> superglobal.
       While the data looks similar to <span class="function">serialize</span> please note it is a different format
       which is specified in the <a href="session.configuration.html#ini.session.serialize-handler" class="link">session.serialize_handler</a> ini setting.
      </p>


function_name: session_set_save_handler
name: write
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">write</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$sessionId</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$data</code></span>)</div>

      </p>
      <p class="para">
       The <code class="parameter">write</code> callback is called when the session needs to be saved and closed. This
       callback receives the current session ID a serialized version the <var class="varname">$_SESSION</var> superglobal.  The serialization
       method used internally by PHP is specified in the <a href="session.configuration.html#ini.session.serialize-handler" class="link">session.serialize_handler</a> ini setting.
      </p>
      <p class="para">
       The serialized session data passed to this callback should be stored against the passed session ID. When retrieving
       this data, the <code class="parameter">read</code> callback must return the exact value that was originally passed to
       the <code class="parameter">write</code> callback.
      </p>
      <p class="para">
       This callback is invoked when PHP shuts down or explicitly when <span class="function">session_write_close</span>
       is called.  Note that after executing this function PHP will internally execute the <code class="parameter">close</code> callback.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         The &quot;write&quot; handler is not executed until after the output stream is
         closed.  Thus, output from debugging statements in the &quot;write&quot;
         handler will never be seen in the browser.  If debugging output is
         necessary, it is suggested that the debug output be written to a
         file instead.
        </p>
       </p></blockquote>
      </p>


function_name: session_set_save_handler
name: destroy
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">destroy</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$sessionId</code></span>)</div>

      </p>
      <p class="para">
       This callback is executed when a session is destroyed with <span class="function">session_destroy</span> or with
       <span class="function">session_regenerate_id</span> with the destroy parameter set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
       Return value should be <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for success, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for failure.
      </p>


function_name: session_set_save_handler
name: gc
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">gc</span></span>(<span class="methodparam"><span class="type">int</span> <code class="parameter">$lifetime</code></span>)</div>

      </p>
      <p class="para">
       The garbage collector callback is invoked internally by PHP periodically in order to
       purge old session data.  The frequency is controlled by
       <a href="session.configuration.html#ini.session.gc-probability" class="link">session.gc_probability</a> and <a href="session.configuration.html#ini.session.gc-divisor" class="link">session.gc_divisor</a>.
       The value of lifetime which is passed to this callback can be set in <a href="session.configuration.html#ini.session.gc-maxlifetime" class="link">session.gc_maxlifetime</a>.
       Return value should be <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for success, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for failure.
      </p>


function_name: session_set_save_handler
name: create_sid
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">string</span> <span class="methodname"><span class="replaceable">create_sid</span></span>()</div>

      </p>
      <p class="para">
       This callback is executed when a new session ID is required. No
       parameters are provided, and the return value should be a string that
       is a valid session ID for your handler.
      </p>


function_name: session_set_save_handler
name: validate_sid
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">validate_sid</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$key</code></span>)</div>

      </p>
      <p class="para">
       This callback is executed when a session is to be started, a session ID is supplied
       and <a href="session.configuration.html#ini.session.use-strict-mode" class="link">session.use_strict_mode</a> is enabled.
       The <code class="parameter">key</code> is the session ID to validate.
       A session ID is valid, if a session with that ID already exists.
       The return value should be <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for success, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for failure.
      </p>


function_name: session_set_save_handler
name: update_timestamp
type: callable
description:
<p class="para">
       A callable with the following signature:
       <div class="methodsynopsis dc-description"><span class="type">bool</span> <span class="methodname"><span class="replaceable">update_timestamp</span></span>(<span class="methodparam"><span class="type">string</span> <code class="parameter">$key</code></span>, <span class="methodparam"><span class="type">string</span> <code class="parameter">$val</code></span>)</div>

      </p>
      <p class="para">
       This callback is executed when a session is updated.
       <code class="parameter">key</code> is the session ID, <code class="parameter">val</code> is the session data.
       The return value should be <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> for success, <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> for failure.
      </p>


function_name: session_set_save_handler
name: sessionhandler
type: object
description:
<p class="para">
       An instance of a class implementing
       <span class="interfacename">SessionHandlerInterface</span>, and optionally
       <span class="interfacename">SessionIdInterface</span> and/or
       <span class="interfacename">SessionUpdateTimestampHandlerInterface</span>, such as
       <span class="classname">SessionHandler</span>, to register as the session
       handler.
      </p>


function_name: session_set_save_handler
name: register_shutdown
type: bool
description:
<p class="para">
       Register <span class="function">session_write_close</span> as a
       <span class="function">register_shutdown_function</span> function.
      </p>


function_name: session_start
name: options
type: array
initializer: []
description:
<p class="para">
      If provided, this is an associative array of options that will override
      the currently set
      <a href="session.configuration.html" class="link">session configuration directives</a>.
      The keys should not include the <code class="literal">session.</code> prefix.
     </p>
     <p class="para">
      In addition to the normal set of configuration directives, a
      <code class="literal">read_and_close</code> option may also be provided. If set to
      <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, this will result in the session being closed immediately after
      being read, thereby avoiding unnecessary locking if the session data
      won&#039;t be changed.
     </p>


function_name: SessionHandler.gc
name: max_lifetime
type: int
description:
<p class="para">
      Sessions that have not updated for the last <code class="parameter">max_lifetime</code> seconds will be removed.
     </p>


function_name: SessionHandler.write
name: data
type: string
description:
<p class="para">
      The encoded session data.  This data is the result of the PHP internally encoding the <var class="varname">$_SESSION</var> superglobal to a serialized
      string and passing it as this parameter.  Please note sessions use an alternative serialization method.
     </p>


function_name: CommonMark\Node.accept
name: visitor
type: CommonMark\Interfaces\IVisitor
description:
<p class="para">
      An object implementing <span class="classname">CommonMark\Interfaces\IVisitor</span>
     </p>


function_name: CommonMark\Interfaces\IVisitor.enter
name: visitable
type: IVisitable
description:
<p class="para">
      The current <span class="classname">CommonMark\Interfaces\IVisitable</span> being entered
     </p>


function_name: CommonMark\Interfaces\IVisitor.leave
name: visitable
type: IVisitable
description:
<p class="para">
      The current <span class="classname">CommonMark\Interfaces\IVisitable</span> being exited
     </p>


function_name: CommonMark\CQL.__invoke
name: handler
type: callable
description:
<p class="para">
      should have the prototype:
      <div class="methodsynopsis dc-description"><span class="type"><span class="type">bool</span><span class="type">null</span></span> <span class="methodname">handler</span>(<span class="methodparam"><span class="type">CommonMark\Node</span> <code class="parameter">$root</code></span>, <span class="methodparam"><span class="type">CommonMark\Node</span> <code class="parameter">$entering</code></span>)</div>

      <ul class="simplelist">
       <li>Should <code class="parameter">handler</code> fail to return (void), or return <span class="type">null</span>, CQL will continue executing</li>
       <li>Should the handler return a truthy value, CQL will continue executing.</li>
       <li>Should the handler return a falsy value, CQL will stop executing</li>
      </ul>
     </p>


function_name: Parle\Lexer.callout
name: callback
type: callable
description:
<p class="para">
      Callable to be invoked. The callable doesn&#039;t receive any arguments and its return value is ignored.
     </p>


function_name: Parle\Lexer.push
name: id
type: int
description:
<p class="para">
      Token id. If the lexer instance is meant to be used standalone, this can be an arbitrary number. If the lexer instance is going to be passed to the parser, it has to be an id returned by  <span class="methodname">Parle\Parser::tokenid</span>.
     </p>


function_name: Parle\RLexer.push
name: id
type: int
description:
<p class="para">
      Token id. If the lexer instance is meant to be used standalone, this can be an arbitrary number. If the lexer instance is going to be passed to the parser, it has to be an id returned by  <span class="methodname">Parle\RParser::tokenid</span>.
     </p>


function_name: Parle\RLexer.push
name: state
type: string
description:
<p class="para">
      State name. If &#039;*&#039; is used as start state, then the rule is applied to all lexer states.
     </p>


function_name: Parle\RLexer.push
name: newState
type: string
description:
<p class="para">
       New state name, after the rule was applied.
      </p>
      <p class="para">
       If &#039;.&#039; is specified as the exit state, then the lexer state is unchanged when that rule matches. An exit state with &#039;&gt;&#039; before the name means push. Use the signature without id for either continuation or to start matching, when a continuation or recursion is required.
      </p>
      <p class="para">
       If &#039;&lt;&#039; is specified as exit state, it means pop. In that case, the signature containing the id can be used to identify the match. Note that even in the case an id is specified, the rule will finish first when all the previous pushes popped.
      </p>


function_name: Parle\Parser.consume
name: lexer
type: Parle\Lexer
description:
<p class="para">
      A lexer object containing the lexing rules prepared for the particular grammar.
     </p>


function_name: Parle\Parser.tokenId
name: tok
type: string
description:
<p class="para">
      Name of the token as used in  <span class="methodname">Parle\Parser::token</span>.
     </p>


function_name: Parle\RParser.tokenId
name: tok
type: string
description:
<p class="para">
      Name of the token as used in  <span class="methodname">Parle\RParser::token</span>.
     </p>


function_name: preg_grep
name: flags
type: int
description:
<p class="para">
       If set to <strong><code>PREG_GREP_INVERT</code></strong>, this function returns
       the elements of the input array that do <em>not</em> match
       the given <code class="parameter">pattern</code>.
      </p>


function_name: preg_match_all
name: subject
type: string
description:
<p class="para">
           If this flag is passed, unmatched subpatterns are reported as <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>;
           otherwise they are reported as an empty <span class="type">string</span>.
          </p>


function_name: preg_match_all
name: matches
type: array
description:
<p class="para">
       Array of all matches in multi-dimensional array ordered according to
       <code class="parameter">flags</code>.
      </p>


function_name: preg_match_all
name: flags
type: int
description:
<p class="para">
           If this flag is passed, for every occurring match the appendant string
           offset (in bytes) will also be returned. Note that this changes the value of
           <code class="parameter">matches</code> into an array of arrays where every element is an
           array consisting of the matched string at offset <code class="literal">0</code>
           and its string offset into <code class="parameter">subject</code> at offset
           <code class="literal">1</code>.
           <div class="informalexample">
            <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">'/(foo)(bar)(baz)/'</span><span style="color: #007700">, </span><span style="color: #DD0000">'foobarbaz'</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">, </span><span style="color: #0000BB">PREG_OFFSET_CAPTURE</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
            </div>

            <p class="para">The above example will output:</p>
            <div class="example-contents screen">
<div class="cdata"><pre>
Array
(
    [0] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [0] =&gt; foobarbaz
                    [1] =&gt; 0
                )

        )

    [1] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [0] =&gt; foo
                    [1] =&gt; 0
                )

        )

    [2] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [0] =&gt; bar
                    [1] =&gt; 3
                )

        )

    [3] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [0] =&gt; baz
                    [1] =&gt; 6
                )

        )

)
</pre></div>
            </div>
           </div>
          </p>


function_name: preg_match_all
name: offset
type: int
description:
<p class="para">
       Normally, the search starts from the beginning of the subject string.
       The optional parameter <code class="parameter">offset</code> can be used to
       specify the alternate place from which to start the search (in bytes).
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Using <code class="parameter">offset</code> is not equivalent to passing
        <code class="code">substr($subject, $offset)</code> to
        <span class="function">preg_match_all</span> in place of the subject string,
        because <code class="parameter">pattern</code> can contain assertions such as
        <em>^</em>, <em>$</em> or
        <em>(?&lt;=x)</em>. See <span class="function">preg_match</span>
        for examples.
       </p>
      </p></blockquote>


function_name: preg_match
name: subject
type: string
description:
<p class="para">
           If this flag is passed, unmatched subpatterns are reported as <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>;
           otherwise they are reported as an empty <span class="type">string</span>.
           <div class="informalexample">
            <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/(a)(b)*(c)/'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ac'</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/(a)(b)*(c)/'</span><span style="color: #007700">, </span><span style="color: #DD0000">'ac'</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">, </span><span style="color: #0000BB">PREG_UNMATCHED_AS_NULL</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
            </div>

            <p class="para">The above example will output:</p>
            <div class="example-contents screen">
<div class="cdata"><pre>
array(4) {
  [0]=&gt;
  string(2) &quot;ac&quot;
  [1]=&gt;
  string(1) &quot;a&quot;
  [2]=&gt;
  string(0) &quot;&quot;
  [3]=&gt;
  string(1) &quot;c&quot;
}
array(4) {
  [0]=&gt;
  string(2) &quot;ac&quot;
  [1]=&gt;
  string(1) &quot;a&quot;
  [2]=&gt;
  NULL
  [3]=&gt;
  string(1) &quot;c&quot;
}
</pre></div>
            </div>
           </div>
          </p>


function_name: preg_match
name: matches
type: array
description:
<p class="para">
       If <code class="parameter">matches</code> is provided, then it is filled with
       the results of search. <var class="varname">$matches[0]</var> will contain the
       text that matched the full pattern, <var class="varname">$matches[1]</var>
       will have the text that matched the first captured parenthesized
       subpattern, and so on.
      </p>


function_name: preg_match
name: flags
type: int
description:
<p class="para">
           If this flag is passed, for every occurring match the appendant string
           offset (in bytes) will also be returned. Note that this changes the value of
           <code class="parameter">matches</code> into an array where every element is an
           array consisting of the matched string at offset <code class="literal">0</code>
           and its string offset into <code class="parameter">subject</code> at offset
           <code class="literal">1</code>.
           <div class="informalexample">
            <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/(foo)(bar)(baz)/'</span><span style="color: #007700">, </span><span style="color: #DD0000">'foobarbaz'</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">, </span><span style="color: #0000BB">PREG_OFFSET_CAPTURE</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
            </div>

            <p class="para">The above example will output:</p>
            <div class="example-contents screen">
<div class="cdata"><pre>
Array
(
    [0] =&gt; Array
        (
            [0] =&gt; foobarbaz
            [1] =&gt; 0
        )

    [1] =&gt; Array
        (
            [0] =&gt; foo
            [1] =&gt; 0
        )

    [2] =&gt; Array
        (
            [0] =&gt; bar
            [1] =&gt; 3
        )

    [3] =&gt; Array
        (
            [0] =&gt; baz
            [1] =&gt; 6
        )

)
</pre></div>
            </div>
           </div>
          </p>


function_name: preg_match
name: offset
type: int
description:
<p class="para">
       Normally, the search starts from the beginning of the subject string.
       The optional parameter <code class="parameter">offset</code> can be used to
       specify the alternate place from which to start the search (in bytes).
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Using <code class="parameter">offset</code> is not equivalent to passing
        <code class="code">substr($subject, $offset)</code> to
        <span class="function">preg_match</span> in place of the subject string,
        because <code class="parameter">pattern</code> can contain assertions such as
        <em>^</em>, <em>$</em> or
        <em>(?&lt;=x)</em>. Compare:
        <div class="informalexample">
         <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$subject </span><span style="color: #007700">= </span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$pattern </span><span style="color: #007700">= </span><span style="color: #DD0000">'/^def/'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #0000BB">$pattern</span><span style="color: #007700">, </span><span style="color: #0000BB">$subject</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">, </span><span style="color: #0000BB">PREG_OFFSET_CAPTURE</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
         </div>

         <p class="para">The above example will output:</p>
         <div class="example-contents screen">
<div class="cdata"><pre>
Array
(
)
</pre></div>
         </div>
         <p class="para">
          while this example
         </p>
         <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$subject </span><span style="color: #007700">= </span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$pattern </span><span style="color: #007700">= </span><span style="color: #DD0000">'/^def/'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #0000BB">$pattern</span><span style="color: #007700">, </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$subject</span><span style="color: #007700">,</span><span style="color: #0000BB">3</span><span style="color: #007700">), </span><span style="color: #0000BB">$matches</span><span style="color: #007700">, </span><span style="color: #0000BB">PREG_OFFSET_CAPTURE</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
         </div>

         <p class="para">
          will produce
         </p>
         <div class="example-contents screen">
<div class="cdata"><pre>
Array
(
    [0] =&gt; Array
        (
            [0] =&gt; def
            [1] =&gt; 0
        )

)
</pre></div>
         </div>
         <p class="para">
          Alternatively, to avoid using <span class="function">substr</span>, use the
          <code class="literal">\G</code> assertion rather than the <code class="literal">^</code> anchor, or
          the <code class="literal">A</code> modifier instead, both of which work with
          the <code class="parameter">offset</code> parameter.
         </p>
        </div>
       </p>
      </p></blockquote>


function_name: preg_quote
name: delimiter
type: null
description:
<p class="para">
       If the optional <code class="parameter">delimiter</code> is specified, it
       will also be escaped.  This is useful for escaping the delimiter
       that is required by the PCRE functions. The <code class="literal">/</code> is the most commonly
       used delimiter.
      </p>


function_name: preg_replace_callback_array
name: pattern
type: array
description:
<p class="para">
       An associative array mapping patterns (keys) to <span class="type">callable</span>s (values).
      </p>


function_name: preg_replace_callback_array
name: limit
type: int
initializer: -1
description:
<p class="para">
       The maximum possible replacements for each pattern in each
       <code class="parameter">subject</code> string. Defaults to
       <code class="literal">-1</code> (no limit).
      </p>


function_name: preg_replace_callback_array
name: count
type: int
description:
<p class="para">
       If specified, this variable will be filled with the number of
       replacements done.
      </p>


function_name: preg_replace_callback_array
name: flags
type: int
description:
<p class="para">
       <code class="parameter">flags</code> can be a combination of the
       <strong><code><a href="pcre.constants.html#constant.preg-offset-capture">PREG_OFFSET_CAPTURE</a></code></strong> and
       <strong><code><a href="pcre.constants.html#constant.preg-unmatched-as-null">PREG_UNMATCHED_AS_NULL</a></code></strong> flags, which influence the
       format of the matches array.
       See the description in <span class="function">preg_match</span> for more details.
      </p>


function_name: preg_replace_callback
name: pattern
type: array
description:
<p class="para">
       The pattern to search for. It can be either a string or an array with
       strings.
      </p>


function_name: preg_replace_callback
name: callback
type: callable
description:
<p class="para">
       A callback that will be called and passed an array of matched elements
       in the <code class="parameter">subject</code> string. The callback should
       return the replacement string. This is the callback signature:
      </p>
      <p class="para">
       <div class="methodsynopsis dc-description"><span class="type">string</span> <span class="methodname"><span class="replaceable">handler</span></span>(<span class="methodparam"><span class="type">array</span> <code class="parameter">$matches</code></span>)</div>

      </p>
      <p class="para">
       You&#039;ll often need the <code class="parameter">callback</code> function
       for a <span class="function">preg_replace_callback</span> in just one place.
       In this case you can use an
       <a href="functions.anonymous.html" class="link">anonymous function</a> to
       declare the callback within the call to
       <span class="function">preg_replace_callback</span>. By doing it this way
       you have all information for the call in one place and do not
       clutter the function namespace with a callback function&#039;s name
       not used anywhere else.
      </p>
      <p class="para">
       <div class="example" id="example-24">
        <p><strong>Example # <span class="function">preg_replace_callback</span> and
        anonymous function</strong></p>
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* a unix-style command line filter to convert uppercase<br /> * letters at the beginning of paragraphs to lowercase */<br /></span><span style="color: #0000BB">$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"php://stdin"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">) or die(</span><span style="color: #DD0000">"can't read stdin"</span><span style="color: #007700">);<br />while (!</span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">$line </span><span style="color: #007700">= </span><span style="color: #0000BB">fgets</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$line </span><span style="color: #007700">= </span><span style="color: #0000BB">preg_replace_callback</span><span style="color: #007700">(<br />        </span><span style="color: #DD0000">'|&lt;p&gt;\s*\w|'</span><span style="color: #007700">,<br />        function (</span><span style="color: #0000BB">$matches</span><span style="color: #007700">) {<br />            return </span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]);<br />        },<br />        </span><span style="color: #0000BB">$line<br />    </span><span style="color: #007700">);<br />    echo </span><span style="color: #0000BB">$line</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: preg_replace
name: pattern
type: array
description:
<p class="para">
       The pattern to search for. It can be either a string or an array with
       strings.
      </p>
      <p class="para">
       Several <a href="reference.pcre.pattern.modifiers.html" class="link">PCRE modifiers</a>
       are also available.
      </p>


function_name: preg_replace
name: replacement
type: array
description:
<p class="para">
       The string or an array with strings to replace. If this parameter is a
       string and the <code class="parameter">pattern</code> parameter is an array,
       all patterns will be replaced by that string. If both
       <code class="parameter">pattern</code> and <code class="parameter">replacement</code>
       parameters are arrays, each <code class="parameter">pattern</code> will be
       replaced by the <code class="parameter">replacement</code> counterpart. If
       there are fewer elements in the <code class="parameter">replacement</code>
       array than in the <code class="parameter">pattern</code> array, any extra
       <code class="parameter">pattern</code>s will be replaced by an empty string.
      </p>
      <p class="para">
       <code class="parameter">replacement</code> may contain references of the form
       <code class="literal">\<span class="replaceable">n</span></code> or
       <code class="literal">$<span class="replaceable">n</span></code>, with the latter form
       being the preferred one. Every such reference will be replaced by the text
       captured by the <span class="replaceable">n</span>&#039;th parenthesized pattern.
       <span class="replaceable">n</span> can be from 0 to 99, and
       <code class="literal">\0</code> or <code class="literal">$0</code> refers to the text matched
       by the whole pattern. Opening parentheses are counted from left to right
       (starting from 1) to obtain the number of the capturing subpattern.
       Note that backslashes in <span class="type">string</span> literals may require to be escaped.
      </p>
      <p class="para">
       When working with a replacement pattern where a backreference is 
       immediately followed by another number (i.e.: placing a literal number
       immediately after a matched pattern), you cannot use the familiar 
       <code class="literal">\1</code> notation for your backreference.  
       <code class="literal">\11</code>, for example, would confuse
       <span class="function">preg_replace</span> since it does not know whether you
       want the <code class="literal">\1</code> backreference followed by a literal 
       <code class="literal">1</code>, or the <code class="literal">\11</code> backreference
       followed by nothing.  In this case the solution is to use 
       <code class="literal">${1}1</code>.  This creates an isolated
       <code class="literal">$1</code> backreference, leaving the <code class="literal">1</code>
       as a literal.
      </p>
      <p class="para">
       When using the deprecated <code class="literal">e</code> modifier, this function escapes
       some characters (namely <code class="literal">&#039;</code>, <code class="literal">&quot;</code>,
       <code class="literal">\</code> and NULL) in the strings that replace the
       backreferences. This is done to ensure that no syntax errors arise
       from backreference usage with either single or double quotes (e.g.
       <code class="literal">&#039;strlen(\&#039;$1\&#039;)+strlen(&quot;$2&quot;)&#039;</code>). Make sure you are
       aware of PHP&#039;s <a href="language.types.string.html" class="link">string
       syntax</a> to know exactly how the interpreted string will look.
      </p>


function_name: preg_replace
name: subject
type: array
description:
<p class="para">
       The string or an array with strings to search and replace.
      </p>
      <p class="para">
       If <code class="parameter">subject</code> is an array, then the search and
       replace is performed on every entry of <code class="parameter">subject</code>,
       and the return value is an array as well.
      </p>
      <p class="para">
       If the <code class="parameter">subject</code> array is associative, keys
       will be preserved in the returned value.
      </p>


function_name: preg_split
name: limit
type: int
initializer: -1
description:
<p class="para">
       If specified, then only substrings up to <code class="parameter">limit</code>
       are returned with the rest of the string being placed in the last
       substring.  A <code class="parameter">limit</code> of -1 or 0 means &quot;no limit&quot;.
      </p>


function_name: preg_split
name: flags
type: int
description:
<p class="para">
           If this flag is set, for every occurring match the appendant string
           offset will also be returned. Note that this changes the return
           value in an array where every element is an array consisting of the
           matched string at offset <code class="literal">0</code> and its string offset
           into <code class="parameter">subject</code> at offset <code class="literal">1</code>.
          </p>


function_name: addcslashes
name: characters
type: string
description:
<p class="para">
       A list of characters to be escaped. If
       <code class="parameter">characters</code> contains characters
       <code class="literal">\n</code>, <code class="literal">\r</code> etc., they are
       converted in C-like style, while other non-alphanumeric characters
       with ASCII codes lower than 32 and higher than 126 converted to
       octal representation.
      </p>
      <p class="para">
       When you define a sequence of characters in the <code class="parameter">characters</code> argument
       make sure that you know what characters come between the
       characters that you set as the start and end of the range.
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">addcslashes</span><span style="color: #007700">(</span><span style="color: #DD0000">'foo[ ]'</span><span style="color: #007700">, </span><span style="color: #DD0000">'A..z'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// output:  \f\o\o\[ \]<br />// All upper and lower-case letters will be escaped<br />// ... but so will the [\]^_`<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
       Also, if the first character in a range has a higher ASCII value
       than the second character in the range, no range will be
       constructed.  Only the start, end and period characters will be
       escaped. Use the <span class="function">ord</span> function to find the
       ASCII value for a character.
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">addcslashes</span><span style="color: #007700">(</span><span style="color: #DD0000">"zoo['.']"</span><span style="color: #007700">, </span><span style="color: #DD0000">'z..A'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// output:  \zoo['\.']<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>
      <p class="para">
       Be careful if you choose to escape characters 0, a, b, f, n, r, t and
       v. They will be converted to \0, \a, \b, \f, \n, \r, \t and \v, all of
       which are predefined escape sequences in C. Many of these sequences are
       also defined in other C-derived languages, including PHP, meaning that
       you may not get the desired result if you use the output of
       <span class="function">addcslashes</span> to generate code in those languages
       with these characters defined in <code class="parameter">characters</code>.
      </p>


function_name: chr
name: codepoint
type: int
description:
<p class="para">
       An integer between 0 and 255.
      </p>
      <p class="para">
       Values outside the valid range (0..255) will be bitwise and&#039;ed with 255,
       which is equivalent to the following algorithm:
       <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">while ($bytevalue &lt; 0) {<br />    $bytevalue += 256;<br />}<br />$bytevalue %= 256;</span></code></div>
       </div>

      </p>


function_name: crypt
name: string
type: string
description:
<p class="para">
       The string to be hashed.
      </p>
      <div class="caution"><strong class="caution">Caution</strong>
       <p class="para">
        Using the <strong><code><a href="string.constants.html#constant.crypt-blowfish">CRYPT_BLOWFISH</a></code></strong> algorithm, will result
        in the <code class="parameter">string</code> parameter being truncated to a
        maximum length of 72 bytes.
       </p>
      </div>


function_name: crypt
name: salt
type: string
description:
<p class="para">
       A salt string to base the hashing on. If not provided, the
       behaviour is defined by the algorithm implementation and can lead to
       unexpected results.
      </p>


function_name: echo
name: expressions
type: string
description:
<p class="para">
       One or more string expressions to output, separated by commas.
       Non-string values will be coerced to strings, even when
       <a href="language.types.declarations.html#language.types.declarations.strict" class="link">the
       <code class="literal">strict_types</code> directive</a> is enabled.
      </p>


function_name: explode
name: limit
type: int
description:
<p class="para">
       If <code class="parameter">limit</code> is set and positive, the returned array will contain
       a maximum of <code class="parameter">limit</code> elements with the last
       element containing the rest of <code class="parameter">string</code>.
      </p>
      <p class="para">
       If the <code class="parameter">limit</code> parameter is negative, all components
       except the last -<code class="parameter">limit</code> are returned.
      </p>
      <p class="para">
       If the <code class="parameter">limit</code> parameter is zero, then this is treated as 1.
      </p>


function_name: fprintf
name: format
type: string
description:
<p class="simpara">
       For <code class="literal">s</code> specifier: it acts as a cutoff point,
       setting a maximum character limit to the string.
      </p>


function_name: get_html_translation_table
name: table
type: int
description:
<p class="para">
       Which table to return. Either <strong><code><a href="string.constants.html#constant.html-entities">HTML_ENTITIES</a></code></strong> or
       <strong><code><a href="string.constants.html#constant.html-specialchars">HTML_SPECIALCHARS</a></code></strong>.
      </p>


function_name: get_html_translation_table
name: flags
type: int
initializer: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
description:
<p class="para">
       A bitmask of one or more of the following flags, which specify which quotes the
       table will contain as well as which document type the table is for. The default is
       <code class="literal">ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401</code>.
       <table class="doctable table">
        <caption><strong>Available <code class="parameter">flags</code> constants</strong></caption>
        
         <thead>
          <tr>
           <th>Constant Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-compat">ENT_COMPAT</a></code></strong></td>
           <td>Table will contain entities for double-quotes, but not for single-quotes.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-quotes">ENT_QUOTES</a></code></strong></td>
           <td>Table will contain entities for both double and single quotes.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-noquotes">ENT_NOQUOTES</a></code></strong></td>
           <td>Table will neither contain entities for single quotes nor for double quotes.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-substitute">ENT_SUBSTITUTE</a></code></strong></td>
           <td>
            Replace invalid code unit sequences with a Unicode Replacement Character
            U+FFFD (UTF-8) or &amp;#xFFFD; (otherwise) instead of returning an empty string.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html401">ENT_HTML401</a></code></strong></td>
           <td>Table for HTML 4.01.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xml1">ENT_XML1</a></code></strong></td>
           <td>Table for XML 1.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xhtml">ENT_XHTML</a></code></strong></td>
           <td>Table for XHTML.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html5">ENT_HTML5</a></code></strong></td>
           <td>Table for HTML 5.</td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: get_html_translation_table
name: encoding
type: string
initializer: "UTF-8"
description:
<p class="para">
       Encoding to use.
       If omitted, the default value for this argument is UTF-8.
      </p>
      

<p class="para">
 The following character sets are supported:
 <table class="doctable table">
  <caption><strong>Supported charsets</strong></caption>
  
   <thead>
    <tr>
     <th>Charset</th>
     <th>Aliases</th>
     <th>Description</th>
    </tr>

   </thead>

   <tbody class="tbody">
    <tr>
     <td>ISO-8859-1</td>
     <td>ISO8859-1</td>
     <td>
      Western European, Latin-1.
     </td>
    </tr>

    <tr>
     <td>ISO-8859-5</td>
     <td>ISO8859-5</td>
     <td>
      Little used cyrillic charset (Latin/Cyrillic).
     </td>
    </tr>

    <tr>
     <td>ISO-8859-15</td>
     <td>ISO8859-15</td>
     <td>
      Western European, Latin-9. Adds the Euro sign, French and Finnish
      letters missing in Latin-1 (ISO-8859-1).
     </td>
    </tr>

    <tr>
     <td>UTF-8</td>
     <td class="empty">&nbsp;</td>
     <td>
      ASCII compatible multi-byte 8-bit Unicode.
     </td>
    </tr>

    <tr>
     <td>cp866</td>
     <td>ibm866, 866</td>
     <td>
      DOS-specific Cyrillic charset.
     </td>
    </tr>

    <tr>
     <td>cp1251</td>
     <td>Windows-1251, win-1251, 1251</td>
     <td>
      Windows-specific Cyrillic charset.
     </td>
    </tr>

    <tr>
     <td>cp1252</td>
     <td>Windows-1252, 1252</td>
     <td>
      Windows specific charset for Western European.
     </td>
    </tr>

    <tr>
     <td>KOI8-R</td>
     <td>koi8-ru, koi8r</td>
     <td>
      Russian.
     </td>
    </tr>

    <tr>
     <td>BIG5</td>
     <td>950</td>
     <td>
      Traditional Chinese, mainly used in Taiwan.
     </td>
    </tr>

    <tr>
     <td>GB2312</td>
     <td>936</td>
     <td>
      Simplified Chinese, national standard character set.
     </td>
    </tr>

    <tr>
     <td>BIG5-HKSCS</td>
     <td class="empty">&nbsp;</td>
     <td>
      Big5 with Hong Kong extensions, Traditional Chinese.
     </td>
    </tr>

    <tr>
     <td>Shift_JIS</td>
     <td>SJIS, SJIS-win, cp932, 932</td>
     <td>
      Japanese
     </td>
    </tr>

    <tr>
     <td>EUC-JP</td>
     <td>EUCJP, eucJP-win</td>
     <td>
      Japanese
     </td>
    </tr>

    <tr>
     <td>MacRoman</td>
     <td class="empty">&nbsp;</td>
     <td>
      Charset that was used by Mac OS.
     </td>
    </tr>

    <tr>
     <td><code class="literal">&#039;&#039;</code></td>
     <td class="empty">&nbsp;</td>
     <td>
      An empty string activates detection from script encoding (Zend multibyte),
      <a href="ini.core.html#ini.default-charset" class="link">default_charset</a> and current
      locale (see <span class="function">nl_langinfo</span> and
      <span class="function">setlocale</span>), in this order. Not recommended.
     </td>
    </tr>

   </tbody>
  
 </table>

 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <span class="simpara">
   Any other character sets are not recognized. The default encoding will be
   used instead and a warning will be emitted.
  </span>
 </p></blockquote>
</p>


function_name: hebrev
name: max_chars_per_line
type: int
description:
<p class="para">
       This optional parameter indicates maximum number of characters per
       line that will be returned.
      </p>


function_name: html_entity_decode
name: flags
type: int
initializer: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
description:
<p class="para">
       A bitmask of one or more of the following flags, which specify how to handle quotes and
       which document type to use. The default is <code class="literal">ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401</code>.
       <table class="doctable table">
        <caption><strong>Available <code class="parameter">flags</code> constants</strong></caption>
        
         <thead>
          <tr>
           <th>Constant Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-compat">ENT_COMPAT</a></code></strong></td>
           <td>Will convert double-quotes and leave single-quotes alone.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-quotes">ENT_QUOTES</a></code></strong></td>
           <td>Will convert both double and single quotes.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-noquotes">ENT_NOQUOTES</a></code></strong></td>
           <td>Will leave both double and single quotes unconverted.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-substitute">ENT_SUBSTITUTE</a></code></strong></td>
           <td>
            Replace invalid code unit sequences with a Unicode Replacement Character
            U+FFFD (UTF-8) or &amp;#xFFFD; (otherwise) instead of returning an empty string.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html401">ENT_HTML401</a></code></strong></td>
           <td>
            Handle code as HTML 4.01.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xml1">ENT_XML1</a></code></strong></td>
           <td>
            Handle code as XML 1.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xhtml">ENT_XHTML</a></code></strong></td>
           <td>
            Handle code as XHTML.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html5">ENT_HTML5</a></code></strong></td>
           <td>
            Handle code as HTML 5.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: html_entity_decode
name: encoding
type: null
description:
<p class="para">
  An optional argument defining the encoding used when converting characters.
 </p>

 <p class="para">
  If omitted, <code class="parameter">encoding</code> defaults to the value of the
  <a href="ini.core.html#ini.default-charset" class="link">default_charset</a> configuration
  option.
 </p>

 <p class="para">
  Although this argument is technically optional, you are highly encouraged to
  specify the correct value for your code
  if the <a href="ini.core.html#ini.default-charset" class="link">default_charset</a>
  configuration option may be set incorrectly for the given input.
 </p>

      

<p class="para">
 The following character sets are supported:
 <table class="doctable table">
  <caption><strong>Supported charsets</strong></caption>
  
   <thead>
    <tr>
     <th>Charset</th>
     <th>Aliases</th>
     <th>Description</th>
    </tr>

   </thead>

   <tbody class="tbody">
    <tr>
     <td>ISO-8859-1</td>
     <td>ISO8859-1</td>
     <td>
      Western European, Latin-1.
     </td>
    </tr>

    <tr>
     <td>ISO-8859-5</td>
     <td>ISO8859-5</td>
     <td>
      Little used cyrillic charset (Latin/Cyrillic).
     </td>
    </tr>

    <tr>
     <td>ISO-8859-15</td>
     <td>ISO8859-15</td>
     <td>
      Western European, Latin-9. Adds the Euro sign, French and Finnish
      letters missing in Latin-1 (ISO-8859-1).
     </td>
    </tr>

    <tr>
     <td>UTF-8</td>
     <td class="empty">&nbsp;</td>
     <td>
      ASCII compatible multi-byte 8-bit Unicode.
     </td>
    </tr>

    <tr>
     <td>cp866</td>
     <td>ibm866, 866</td>
     <td>
      DOS-specific Cyrillic charset.
     </td>
    </tr>

    <tr>
     <td>cp1251</td>
     <td>Windows-1251, win-1251, 1251</td>
     <td>
      Windows-specific Cyrillic charset.
     </td>
    </tr>

    <tr>
     <td>cp1252</td>
     <td>Windows-1252, 1252</td>
     <td>
      Windows specific charset for Western European.
     </td>
    </tr>

    <tr>
     <td>KOI8-R</td>
     <td>koi8-ru, koi8r</td>
     <td>
      Russian.
     </td>
    </tr>

    <tr>
     <td>BIG5</td>
     <td>950</td>
     <td>
      Traditional Chinese, mainly used in Taiwan.
     </td>
    </tr>

    <tr>
     <td>GB2312</td>
     <td>936</td>
     <td>
      Simplified Chinese, national standard character set.
     </td>
    </tr>

    <tr>
     <td>BIG5-HKSCS</td>
     <td class="empty">&nbsp;</td>
     <td>
      Big5 with Hong Kong extensions, Traditional Chinese.
     </td>
    </tr>

    <tr>
     <td>Shift_JIS</td>
     <td>SJIS, SJIS-win, cp932, 932</td>
     <td>
      Japanese
     </td>
    </tr>

    <tr>
     <td>EUC-JP</td>
     <td>EUCJP, eucJP-win</td>
     <td>
      Japanese
     </td>
    </tr>

    <tr>
     <td>MacRoman</td>
     <td class="empty">&nbsp;</td>
     <td>
      Charset that was used by Mac OS.
     </td>
    </tr>

    <tr>
     <td><code class="literal">&#039;&#039;</code></td>
     <td class="empty">&nbsp;</td>
     <td>
      An empty string activates detection from script encoding (Zend multibyte),
      <a href="ini.core.html#ini.default-charset" class="link">default_charset</a> and current
      locale (see <span class="function">nl_langinfo</span> and
      <span class="function">setlocale</span>), in this order. Not recommended.
     </td>
    </tr>

   </tbody>
  
 </table>

 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <span class="simpara">
   Any other character sets are not recognized. The default encoding will be
   used instead and a warning will be emitted.
  </span>
 </p></blockquote>
</p>


function_name: htmlentities
name: flags
type: int
initializer: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
description:
<p class="para">
       A bitmask of one or more of the following flags, which specify how to handle quotes,
       invalid code unit sequences and the used document type. The default is
       <code class="literal">ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401</code>.
       <table class="doctable table">
        <caption><strong>Available <code class="parameter">flags</code> constants</strong></caption>
        
         <thead>
          <tr>
           <th>Constant Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-compat">ENT_COMPAT</a></code></strong></td>
           <td>Will convert double-quotes and leave single-quotes alone.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-quotes">ENT_QUOTES</a></code></strong></td>
           <td>Will convert both double and single quotes.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-noquotes">ENT_NOQUOTES</a></code></strong></td>
           <td>Will leave both double and single quotes unconverted.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-ignore">ENT_IGNORE</a></code></strong></td>
           <td>
            Silently discard invalid code unit sequences instead of returning
            an empty string. Using this flag is discouraged as it
            <a href="http://unicode.org/reports/tr36/#Deletion_of_Noncharacters" class="link external">&raquo;&nbsp;may have security implications</a>.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-substitute">ENT_SUBSTITUTE</a></code></strong></td>
           <td>
            Replace invalid code unit sequences with a Unicode Replacement Character
            U+FFFD (UTF-8) or &amp;#FFFD; (otherwise) instead of returning an empty string.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-disallowed">ENT_DISALLOWED</a></code></strong></td>
           <td>
            Replace invalid code points for the given document type with a
            Unicode Replacement Character U+FFFD (UTF-8) or &amp;#FFFD;
            (otherwise) instead of leaving them as is. This may be useful, for
            instance, to ensure the well-formedness of XML documents with
            embedded external content.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html401">ENT_HTML401</a></code></strong></td>
           <td>
            Handle code as HTML 4.01.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xml1">ENT_XML1</a></code></strong></td>
           <td>
            Handle code as XML 1.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xhtml">ENT_XHTML</a></code></strong></td>
           <td>
            Handle code as XHTML.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html5">ENT_HTML5</a></code></strong></td>
           <td>
            Handle code as HTML 5.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: htmlentities
name: double_encode
type: bool
description:
<p class="para">
       When <code class="parameter">double_encode</code> is turned off PHP will not
       encode existing html entities. The default is to convert everything.
      </p>


function_name: htmlspecialchars
name: flags
type: int
initializer: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
description:
<p class="para">
       A bitmask of one or more of the following flags, which specify how to handle quotes,
       invalid code unit sequences and the used document type. The default is
       <code class="literal">ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401</code>.
       <table class="doctable table">
        <caption><strong>Available <code class="parameter">flags</code> constants</strong></caption>
        
         <thead>
          <tr>
           <th>Constant Name</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-compat">ENT_COMPAT</a></code></strong></td>
           <td>Will convert double-quotes and leave single-quotes alone.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-quotes">ENT_QUOTES</a></code></strong></td>
           <td>Will convert both double and single quotes.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-noquotes">ENT_NOQUOTES</a></code></strong></td>
           <td>Will leave both double and single quotes unconverted.</td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-ignore">ENT_IGNORE</a></code></strong></td>
           <td>
            Silently discard invalid code unit sequences instead of returning
            an empty string. Using this flag is discouraged as it
            <a href="http://unicode.org/reports/tr36/#Deletion_of_Noncharacters" class="link external">&raquo;&nbsp;may have security implications</a>.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-substitute">ENT_SUBSTITUTE</a></code></strong></td>
           <td>
            Replace invalid code unit sequences with a Unicode Replacement Character
            U+FFFD (UTF-8) or &amp;#xFFFD; (otherwise) instead of returning an empty string.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-disallowed">ENT_DISALLOWED</a></code></strong></td>
           <td>
            Replace invalid code points for the given document type with a
            Unicode Replacement Character U+FFFD (UTF-8) or &amp;#xFFFD;
            (otherwise) instead of leaving them as is. This may be useful, for
            instance, to ensure the well-formedness of XML documents with
            embedded external content.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html401">ENT_HTML401</a></code></strong></td>
           <td>
            Handle code as HTML 4.01.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xml1">ENT_XML1</a></code></strong></td>
           <td>
            Handle code as XML 1.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-xhtml">ENT_XHTML</a></code></strong></td>
           <td>
            Handle code as XHTML.
           </td>
          </tr>

          <tr>
           <td><strong><code><a href="string.constants.html#constant.ent-html5">ENT_HTML5</a></code></strong></td>
           <td>
            Handle code as HTML 5.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: htmlspecialchars
name: encoding
type: null
description:
<p class="para">
  An optional argument defining the encoding used when converting characters.
 </p>

 <p class="para">
  If omitted, <code class="parameter">encoding</code> defaults to the value of the
  <a href="ini.core.html#ini.default-charset" class="link">default_charset</a> configuration
  option.
 </p>

 <p class="para">
  Although this argument is technically optional, you are highly encouraged to
  specify the correct value for your code
  if the <a href="ini.core.html#ini.default-charset" class="link">default_charset</a>
  configuration option may be set incorrectly for the given input.
 </p>

      <p class="para">
       For the purposes of this function, the encodings
       <code class="literal">ISO-8859-1</code>, <code class="literal">ISO-8859-15</code>,
       <code class="literal">UTF-8</code>, <code class="literal">cp866</code>,
       <code class="literal">cp1251</code>, <code class="literal">cp1252</code>, and
       <code class="literal">KOI8-R</code> are effectively equivalent, provided the
       <code class="parameter">string</code> itself is valid for the encoding, as
       the characters affected by <span class="function">htmlspecialchars</span> occupy
       the same positions in all of these encodings.
      </p>
      

<p class="para">
 The following character sets are supported:
 <table class="doctable table">
  <caption><strong>Supported charsets</strong></caption>
  
   <thead>
    <tr>
     <th>Charset</th>
     <th>Aliases</th>
     <th>Description</th>
    </tr>

   </thead>

   <tbody class="tbody">
    <tr>
     <td>ISO-8859-1</td>
     <td>ISO8859-1</td>
     <td>
      Western European, Latin-1.
     </td>
    </tr>

    <tr>
     <td>ISO-8859-5</td>
     <td>ISO8859-5</td>
     <td>
      Little used cyrillic charset (Latin/Cyrillic).
     </td>
    </tr>

    <tr>
     <td>ISO-8859-15</td>
     <td>ISO8859-15</td>
     <td>
      Western European, Latin-9. Adds the Euro sign, French and Finnish
      letters missing in Latin-1 (ISO-8859-1).
     </td>
    </tr>

    <tr>
     <td>UTF-8</td>
     <td class="empty">&nbsp;</td>
     <td>
      ASCII compatible multi-byte 8-bit Unicode.
     </td>
    </tr>

    <tr>
     <td>cp866</td>
     <td>ibm866, 866</td>
     <td>
      DOS-specific Cyrillic charset.
     </td>
    </tr>

    <tr>
     <td>cp1251</td>
     <td>Windows-1251, win-1251, 1251</td>
     <td>
      Windows-specific Cyrillic charset.
     </td>
    </tr>

    <tr>
     <td>cp1252</td>
     <td>Windows-1252, 1252</td>
     <td>
      Windows specific charset for Western European.
     </td>
    </tr>

    <tr>
     <td>KOI8-R</td>
     <td>koi8-ru, koi8r</td>
     <td>
      Russian.
     </td>
    </tr>

    <tr>
     <td>BIG5</td>
     <td>950</td>
     <td>
      Traditional Chinese, mainly used in Taiwan.
     </td>
    </tr>

    <tr>
     <td>GB2312</td>
     <td>936</td>
     <td>
      Simplified Chinese, national standard character set.
     </td>
    </tr>

    <tr>
     <td>BIG5-HKSCS</td>
     <td class="empty">&nbsp;</td>
     <td>
      Big5 with Hong Kong extensions, Traditional Chinese.
     </td>
    </tr>

    <tr>
     <td>Shift_JIS</td>
     <td>SJIS, SJIS-win, cp932, 932</td>
     <td>
      Japanese
     </td>
    </tr>

    <tr>
     <td>EUC-JP</td>
     <td>EUCJP, eucJP-win</td>
     <td>
      Japanese
     </td>
    </tr>

    <tr>
     <td>MacRoman</td>
     <td class="empty">&nbsp;</td>
     <td>
      Charset that was used by Mac OS.
     </td>
    </tr>

    <tr>
     <td><code class="literal">&#039;&#039;</code></td>
     <td class="empty">&nbsp;</td>
     <td>
      An empty string activates detection from script encoding (Zend multibyte),
      <a href="ini.core.html#ini.default-charset" class="link">default_charset</a> and current
      locale (see <span class="function">nl_langinfo</span> and
      <span class="function">setlocale</span>), in this order. Not recommended.
     </td>
    </tr>

   </tbody>
  
 </table>

 <blockquote class="note"><p><strong class="note">Note</strong>: 
  <span class="simpara">
   Any other character sets are not recognized. The default encoding will be
   used instead and a warning will be emitted.
  </span>
 </p></blockquote>
</p>


function_name: htmlspecialchars
name: double_encode
type: bool
description:
<p class="para">
       When <code class="parameter">double_encode</code> is turned off PHP will not
       encode existing html entities, the default is to convert everything.
      </p>


function_name: ltrim
name: characters
type: string
initializer: " \n\r\t\v\x00"
description:
<p class="para">
       You can also specify the characters you want to strip, by means of the
       <code class="parameter">characters</code> parameter.
       Simply list all characters that you want to be stripped. With
       <code class="literal">..</code> you can specify a range of characters.
      </p>


function_name: md5_file
name: binary
type: bool
description:
<p class="para">
       When <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, returns the digest in raw binary format with a length of
       16.
      </p>


function_name: md5
name: binary
type: bool
description:
<p class="para">
       If the optional <code class="parameter">binary</code> is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>,
       then the md5 digest is instead returned in raw binary format with a
       length of 16.
      </p>


function_name: metaphone
name: max_phonemes
type: int
description:
<p class="para">
       This parameter restricts the returned metaphone key to 
       <code class="parameter">max_phonemes</code> <em>characters</em> in length.
       However, the resulting phonemes are always transcribed completely, so the
       resulting string length may be slightly longer than <code class="parameter">max_phonemes</code>.
       The default value of <code class="literal">0</code> means no restriction.
      </p>


function_name: nl_langinfo
name: item
type: int
description:
<p class="simpara">
               Returns 4 if the sign string immediately follows the <strong><code>CURRENCY_SYMBOL</code></strong>.
              </p>


function_name: number_format
name: decimals
type: int
description:
<p class="para">
       Sets the number of decimal digits.
       If <code class="literal">0</code>, the <code class="parameter">decimal_separator</code> is
       omitted from the return value.
      </p>


function_name: parse_str
name: result
type: array
description:
<p class="para">
       If the second parameter <code class="parameter">result</code> is present,
       variables are stored in this variable as array elements instead.
      </p>

      <div class="warning"><strong class="warning">Warning</strong>
       <p class="para">
        Using this function without the <code class="parameter">result</code> parameter is highly
        <em>DISCOURAGED</em> and <em>DEPRECATED</em> as of PHP 7.2.
        As of PHP 8.0.0, the <code class="parameter">result</code> parameter is <em>mandatory</em>.
       </p>
      </div>


function_name: print
name: expression
type: string
description:
<p class="para">
       The expression to be output. Non-string values will be coerced to strings,
       even when <a href="language.types.declarations.html#language.types.declarations.strict" class="link">the
       <code class="literal">strict_types</code> directive</a> is enabled.
      </p>


function_name: rtrim
name: characters
type: string
initializer: " \n\r\t\v\x00"
description:
<p class="para">
       You can also specify the characters you want to strip, by means
       of the <code class="parameter">characters</code> parameter.
       Simply list all characters that you want to be stripped. With
       <code class="literal">..</code> you can specify a range of characters.
      </p>


function_name: setlocale
name: category
type: int
description:
<p class="simpara">
          <strong><code><a href="string.constants.html#constant.lc-messages">LC_MESSAGES</a></code></strong> for system responses (available if PHP was compiled with
          <code class="literal">libintl</code>)
         </p>


function_name: setlocale
name: locales
type: string
description:
<p class="para">
       If <code class="parameter">locales</code> is the empty string
       <code class="literal">&quot;&quot;</code>, the locale names will be set from the
       values of environment variables with the same names as the above
       categories, or from &quot;LANG&quot;.
      </p>
      <p class="para">
       If <code class="parameter">locales</code> is <code class="literal">&quot;0&quot;</code>,
       the locale setting is not affected, only the current setting is returned.
      </p>
      <p class="para">
       If <code class="parameter">locales</code> is followed by additional
       parameters then each parameter is tried to be set as
       new locale until success. This is useful if a locale is known under
       different names on different systems or for providing a fallback
       for a possibly not available locale.
      </p>


function_name: setlocale
name: rest
type: string
description:
<p class="para">
       Optional string parameters to try as locale settings until
       success.
      </p>


function_name: setlocale
name: locale_array
type: array
description:
<p class="para">
       Each array element is tried to be set as
       new locale until success. This is useful if a locale is known under
       different names on different systems or for providing a fallback
       for a possibly not available locale.
      </p>


function_name: sha1_file
name: binary
type: bool
description:
<p class="para">
       When <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, returns the digest in raw binary format with a length of
       20.
      </p>


function_name: sha1
name: binary
type: bool
description:
<p class="para">
       If the optional <code class="parameter">binary</code> is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>,
       then the sha1 digest is instead returned in raw binary format with a
       length of 20, otherwise the returned value is a 40-character
       hexadecimal number.
      </p>


function_name: similar_text
name: string2
type: string
description:
<p class="para">
       The second string.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Swapping the <code class="parameter">string1</code> and
        <code class="parameter">string2</code> may yield a different result; see the
        example below.
       </p>
      </p></blockquote>


function_name: similar_text
name: percent
type: float
description:
<p class="para">
       By passing a reference as third argument,
       <span class="function">similar_text</span> will calculate the similarity in
       percent, by dividing the result of <span class="function">similar_text</span> by
       the average of the lengths of the given strings times
       <code class="literal">100</code>.
      </p>


function_name: sscanf
name: vars
type: mixed
description:
<p class="para">
       Optionally pass in variables by reference that will contain the parsed values.
      </p>


function_name: str_contains
name: needle
type: string
description:
<p class="para">
       The substring to search for in the <code class="parameter">haystack</code>.
      </p>


function_name: str_getcsv
name: enclosure
type: string
initializer: "\""
description:
<p class="para">
       Set the field enclosure character (one single-byte character only).
      </p>


function_name: str_getcsv
name: escape
type: string
initializer: "\\"
description:
<p class="para">
       Set the escape character (at most one single-byte character). Defaults as a backslash
       (<code class="literal">\</code>)
       An empty string (<code class="literal">&quot;&quot;</code>) disables the proprietary escape mechanism.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Usually an <code class="parameter">enclosure</code> character is escaped inside
        a field by doubling it; however, the <code class="parameter">escape</code>
        character can be used as an alternative. So for the default parameter
        values <code class="literal">&quot;&quot;</code> and <code class="literal">\&quot;</code> have the same
        meaning. Other than allowing to escape the
        <code class="parameter">enclosure</code> character the
        <code class="parameter">escape</code> character has no special meaning; it isn&#039;t
        even meant to escape itself.
       </span>
      </p></blockquote>


function_name: str_ireplace
name: search
type: string
description:
<p class="para">
       The value being searched for, otherwise known as the
       <em>needle</em>.  An array may be used to designate
       multiple needles.
      </p>


function_name: str_ireplace
name: replace
type: string
description:
<p class="para">
       The replacement value that replaces found <code class="parameter">search</code>
       values. An array may be used to designate multiple replacements.
      </p>


function_name: str_ireplace
name: subject
type: array
description:
<p class="para">
       The string or array being searched and replaced on,
       otherwise known as the <em>haystack</em>.
      </p>
      <p class="para">
       If <code class="parameter">subject</code> is an array, then the search and
       replace is performed with every entry of 
       <code class="parameter">subject</code>, and the return value is an array as
       well.
      </p>


function_name: str_ireplace
name: count
type: int
description:
<p class="para">
       If passed, this will be set to the number of replacements performed.
      </p>


function_name: str_pad
name: length
type: int
description:
<p class="para">
       The desired length of the final padded string.
       If the value of <code class="parameter">length</code> is negative,
       less than, or equal to the length of the input string, no padding
       takes place, and <code class="parameter">string</code> will be returned.
      </p>


function_name: str_pad
name: pad_type
type: int
description:
<p class="para">
       Optional argument <code class="parameter">pad_type</code> can be
       <strong><code><a href="string.constants.html#constant.str-pad-right">STR_PAD_RIGHT</a></code></strong>, <strong><code><a href="string.constants.html#constant.str-pad-left">STR_PAD_LEFT</a></code></strong>,
       or <strong><code><a href="string.constants.html#constant.str-pad-both">STR_PAD_BOTH</a></code></strong>. If
       <code class="parameter">pad_type</code> is not specified it is assumed to be
       <strong><code><a href="string.constants.html#constant.str-pad-right">STR_PAD_RIGHT</a></code></strong>.
      </p>


function_name: str_repeat
name: times
type: int
description:
<p class="para">
       Number of time the <code class="parameter">string</code> string should be
       repeated.
      </p>
      <p class="para">
       <code class="parameter">times</code> has to be greater than or equal to 0.
       If the <code class="parameter">times</code> is set to 0, the function
       will return an empty string.
      </p>


function_name: str_replace
name: search
type: string
description:
<p class="para">
       The value being searched for, otherwise known as the <em>needle</em>.
       An array may be used to designate multiple needles.
      </p>


function_name: str_replace
name: subject
type: array
description:
<p class="para">
       The string or array being searched and replaced on,
       otherwise known as the <em>haystack</em>.
      </p>
      <p class="para">
       If <code class="parameter">subject</code> is an array, then the search and
       replace is performed with every entry of
       <code class="parameter">subject</code>, and the return value is an array as
       well.
      </p>


function_name: str_word_count
name: string
type: string
description:
<p class="simpara">
          2 - returns an associative array, where the key is the numeric
          position of the word inside the <code class="parameter">string</code> and
          the value is the actual word itself
         </p>


function_name: str_word_count
name: format
type: int
description:
<p class="simpara">
          1 - returns an array containing all the words found inside the
          <code class="parameter">string</code>
         </p>


function_name: str_word_count
name: characters
type: null
description:
<p class="para">
       A list of additional characters which will be considered as &#039;word&#039;
      </p>


function_name: strcspn
name: offset
type: int
description:
<p class="para">
       The position in <code class="parameter">string</code> to
       start searching.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is given and is non-negative,
       then <span class="function">strcspn</span> will begin
       examining <code class="parameter">string</code> at
       the <code class="parameter">offset</code>&#039;th position. For instance, in
       the string &#039;<code class="literal">abcdef</code>&#039;, the character at
       position <code class="literal">0</code> is &#039;<code class="literal">a</code>&#039;, the
       character at position <code class="literal">2</code> is
       &#039;<code class="literal">c</code>&#039;, and so forth.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is given and is negative,
       then <span class="function">strcspn</span> will begin
       examining <code class="parameter">string</code> at
       the <code class="parameter">offset</code>&#039;th position from the end
       of <code class="parameter">string</code>.
      </p>


function_name: strcspn
name: length
type: null
description:
<p class="para">
       The length of the segment from <code class="parameter">string</code>
       to examine. 
      </p>
      <p class="para">
       If <code class="parameter">length</code> is given and is non-negative,
       then <code class="parameter">string</code> will be examined
       for <code class="parameter">length</code> characters after the starting
       position.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is given and is negative,
       then <code class="parameter">string</code> will be examined from the
       starting position up to <code class="parameter">length</code>
       characters from the end of <code class="parameter">string</code>.
      </p>


function_name: strip_tags
name: allowed_tags
type: null
description:
<p class="para">
       You can use the optional second parameter to specify tags which should
       not be stripped.
       These are either given as <span class="type">string</span>, or as of PHP 7.4.0, as <span class="type">array</span>.
       Refer to the example below regarding the format of this parameter.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        HTML comments and PHP tags are also stripped. This is hardcoded and
        can not be changed with <code class="parameter">allowed_tags</code>.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Self-closing XHTML tags are ignored and only non-self-closing tags should be used in
        <code class="parameter">allowed_tags</code>. For example,
        to allow both <code class="literal">&lt;br&gt;</code> and
        <code class="literal">&lt;br/&gt;</code>, you should use:
       </p>
       <div class="informalexample">
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />strip_tags</span><span style="color: #007700">(</span><span style="color: #0000BB">$input</span><span style="color: #007700">, </span><span style="color: #DD0000">'&lt;br&gt;'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p></blockquote>


function_name: stripos
name: needle
type: string
description:
<p class="para">
       The string to search for.
      </p>
      
 <p class="para">
  Prior to PHP 8.0.0, if <code class="parameter">needle</code> is not a string, it is converted
  to an integer and applied as the ordinal value of a character.
  This behavior is deprecated as of PHP 7.3.0, and relying on it is highly
  discouraged. Depending on the intended behavior, the
  <code class="parameter">needle</code> should either be explicitly cast to string,
  or an explicit call to <span class="function">chr</span> should be performed.
 </p>


function_name: stripos
name: offset
type: int
description:
<p class="para">
       If specified, search will start this number of characters counted from
       the beginning of the string. If the offset is negative, the search will start
       this number of characters counted from the end of the string.
      </p>


function_name: stristr
name: before_needle
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, <span class="function">stristr</span>
       returns the part of the <code class="parameter">haystack</code> before the
       first occurrence of the <code class="parameter">needle</code> (excluding needle).
      </p>


function_name: strpbrk
name: string
type: string
description:
<p class="para">
       The string where <code class="parameter">characters</code> is looked for.
      </p>


function_name: strrchr
name: needle
type: string
description:
<p class="para">
       If <code class="parameter">needle</code> contains more than one character,
       only the first is used. This behavior is different from that of
       <span class="function">strstr</span>.
      </p>
      
 <p class="para">
  Prior to PHP 8.0.0, if <code class="parameter">needle</code> is not a string, it is converted
  to an integer and applied as the ordinal value of a character.
  This behavior is deprecated as of PHP 7.3.0, and relying on it is highly
  discouraged. Depending on the intended behavior, the
  <code class="parameter">needle</code> should either be explicitly cast to string,
  or an explicit call to <span class="function">chr</span> should be performed.
 </p>


function_name: strrchr
name: before_needle
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, <span class="function">strrchr</span>
       returns the part of the <code class="parameter">haystack</code> before the
       last occurrence of the <code class="parameter">needle</code> (excluding the needle).
      </p>


function_name: strripos
name: offset
type: int
description:
<p class="para"> 
       If zero or positive, the search is performed left to right skipping the
       first <code class="parameter">offset</code> bytes of the
       <code class="parameter">haystack</code>.
      </p>
      <p class="para">
       If negative, the search is performed right to left skipping the
       last <code class="parameter">offset</code> bytes of the
       <code class="parameter">haystack</code> and searching for the first occurrence
       of <code class="parameter">needle</code>.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         This is effectively looking for the last occurrence of
         <code class="parameter">needle</code> before the last
         <code class="parameter">offset</code> bytes.
        </p>
       </p></blockquote>
      </p>


function_name: strrpos
name: offset
type: int
description:
<p class="para"> 
       If zero or positive, the search is performed left to right skipping the
       first <code class="parameter">offset</code> bytes of the
       <code class="parameter">haystack</code>.
      </p>
      <p class="para">
       If negative, the search starts <code class="parameter">offset</code> bytes from
       the right instead of from the beginning of <code class="parameter">haystack</code>.
       The search is performed right to left, searching for the first
       occurrence of <code class="parameter">needle</code> from the selected byte.
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
         This is effectively looking for the last occurrence of
         <code class="parameter">needle</code> at or before the last
         <code class="parameter">offset</code> bytes.
        </p>
       </p></blockquote>
      </p>


function_name: strspn
name: offset
type: int
description:
<p class="para">
       The position in <code class="parameter">string</code> to
       start searching.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is given and is non-negative,
       then <span class="function">strspn</span> will begin
       examining <code class="parameter">string</code> at
       the <code class="parameter">offset</code>&#039;th position. For instance, in
       the string &#039;<code class="literal">abcdef</code>&#039;, the character at
       position <code class="literal">0</code> is &#039;<code class="literal">a</code>&#039;, the
       character at position <code class="literal">2</code> is
       &#039;<code class="literal">c</code>&#039;, and so forth.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is given and is negative,
       then <span class="function">strspn</span> will begin
       examining <code class="parameter">string</code> at
       the <code class="parameter">offset</code>&#039;th position from the end
       of <code class="parameter">string</code>.
      </p>


function_name: strspn
name: length
type: null
description:
<p class="para">
       The length of the segment from <code class="parameter">string</code>
       to examine. 
      </p>
      <p class="para">
       If <code class="parameter">length</code> is given and is non-negative,
       then <code class="parameter">string</code> will be examined
       for <code class="parameter">length</code> characters after the starting
       position.
      </p>
      <p class="para">
        If <code class="parameter">length</code> is given and is negative,
        then <code class="parameter">string</code> will be examined from the
        starting position up to <code class="parameter">length</code>
        characters from the end of <code class="parameter">string</code>.
      </p>


function_name: strstr
name: before_needle
type: bool
description:
<p class="para">
       If <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, <span class="function">strstr</span> returns
       the part of the <code class="parameter">haystack</code> before the first
       occurrence of the <code class="parameter">needle</code> (excluding the needle).
      </p>


function_name: strtok
name: string
type: string
description:
<p class="para">
       The <span class="type">string</span> being split up into smaller strings (tokens).
      </p>


function_name: strtok
name: token
type: string
description:
<p class="para">
       The delimiter used when splitting up <code class="parameter">string</code>.
      </p>


function_name: strtr
name: from
type: string
description:
<p class="para">
       The <span class="type">string</span> being translated to <code class="parameter">to</code>.
      </p>


function_name: strtr
name: to
type: string
description:
<p class="para">
       The <span class="type">string</span> replacing <code class="parameter">from</code>.
      </p>


function_name: strtr
name: replace_pairs
type: array
description:
<p class="para">
       The <code class="parameter">replace_pairs</code> parameter may be used instead of 
       <code class="parameter">to</code> and <code class="parameter">from</code>, in which case it&#039;s an
       <span class="type">array</span> in the form <code class="literal">array(&#039;from&#039; =&gt; &#039;to&#039;, ...)</code>. 
      </p>
      <p class="para">
       If <code class="parameter">replace_pairs</code> contains a key which is an empty
       <span class="type">string</span> (<code class="literal">&quot;&quot;</code>), the element is ignored;
       as of PHP 8.0.0 <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong> is raised in this case.
      </p>


function_name: substr_compare
name: offset
type: int
description:
<p class="para">
       The start position for the comparison. If negative, it starts counting
       from the end of the string.
      </p>


function_name: substr_compare
name: length
type: null
description:
<p class="para">
       The length of the comparison. The default value is the largest of the
       length of the <code class="parameter">needle</code> compared to the length of
       <code class="parameter">haystack</code> minus the
       <code class="parameter">offset</code>.
      </p>


function_name: substr_compare
name: case_insensitive
type: bool
description:
<p class="para">
       If <code class="parameter">case_insensitive</code> is <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, comparison is
       case insensitive.
      </p>


function_name: substr_count
name: offset
type: int
description:
<p class="para">
       The offset where to start counting. If the offset is negative, counting
       starts from the end of the string.
      </p>


function_name: substr_count
name: length
type: null
description:
<p class="para">
       The maximum length after the specified offset to search for the
       substring. It outputs a warning if the offset plus the length is
       greater than the <code class="parameter">haystack</code> length.
       A negative length counts from the end of <code class="parameter">haystack</code>.
      </p>


function_name: substr_replace
name: string
type: string
description:
<p class="para">
       The input string.
      </p>
      <p class="para">
       An <span class="type">array</span> of <span class="type">string</span>s can be provided, in which
       case the replacements will occur on each string in turn. In this case,
       the <code class="parameter">replace</code>, <code class="parameter">offset</code>
       and <code class="parameter">length</code> parameters may be provided either as
       scalar values to be applied to each input string in turn, or as
       <span class="type">array</span>s, in which case the corresponding array element will
       be used for each input string.
      </p>


function_name: substr_replace
name: offset
type: int
description:
<p class="para">
       If <code class="parameter">offset</code> is non-negative, the replacing will
       begin at the <code class="parameter">offset</code>&#039;th offset into
       <code class="parameter">string</code>.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is negative, the replacing will
       begin at the <code class="parameter">offset</code>&#039;th character from the
       end of <code class="parameter">string</code>.
      </p>


function_name: substr_replace
name: length
type: null
description:
<p class="para">
       If given and is positive, it represents the length of the portion of
       <code class="parameter">string</code> which is to be replaced. If it is
       negative, it represents the number of characters from the end of
       <code class="parameter">string</code> at which to stop replacing. If it
       is not given, then it will default to strlen(
       <code class="parameter">string</code> ); i.e. end the replacing at the
       end of <code class="parameter">string</code>. Of course, if
       <code class="parameter">length</code> is zero then this function will have the
       effect of inserting <code class="parameter">replace</code> into
       <code class="parameter">string</code> at the given
       <code class="parameter">offset</code> offset.
      </p>


function_name: substr
name: offset
type: int
description:
<p class="para">
       If <code class="parameter">offset</code> is non-negative, the returned string
       will start at the <code class="parameter">offset</code>&#039;th position in
       <code class="parameter">string</code>, counting from zero. For instance,
       in the string &#039;<code class="literal">abcdef</code>&#039;, the character at
       position <code class="literal">0</code> is &#039;<code class="literal">a</code>&#039;, the
       character at position <code class="literal">2</code> is
       &#039;<code class="literal">c</code>&#039;, and so forth.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is negative, the returned string
       will start at the <code class="parameter">offset</code>&#039;th character
       from the end of <code class="parameter">string</code>.
      </p>
      <p class="para">
       If <code class="parameter">string</code> is less than
       <code class="parameter">offset</code> characters long, an empty string will be returned.
      </p>
      <p class="para">
       <div class="example" id="example-32">
        <p><strong>Example # Using a negative <code class="parameter">offset</code></strong></p>
        <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, -</span><span style="color: #0000BB">1</span><span style="color: #007700">);    </span><span style="color: #FF8000">// returns "f"<br /></span><span style="color: #0000BB">$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, -</span><span style="color: #0000BB">2</span><span style="color: #007700">);    </span><span style="color: #FF8000">// returns "ef"<br /></span><span style="color: #0000BB">$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, -</span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">); </span><span style="color: #FF8000">// returns "d"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
        </div>

       </div>
      </p>


function_name: substr
name: length
type: null
description:
<p class="para">
       If <code class="parameter">length</code> is given and is positive, the string
       returned will contain at most <code class="parameter">length</code> characters
       beginning from <code class="parameter">offset</code> (depending on the length of
       <code class="parameter">string</code>).
      </p>
      <p class="para">
       If <code class="parameter">length</code> is given and is negative, then that many
       characters will be omitted from the end of <code class="parameter">string</code>
       (after the start position has been calculated when a
       <code class="parameter">offset</code> is negative).  If
       <code class="parameter">offset</code> denotes the position of this truncation or
       beyond, an empty string will be returned.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is given and is <code class="literal">0</code>,
       an empty string will be returned.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is omitted or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>, the substring starting from
       <code class="parameter">offset</code> until the end of the string will be
       returned.
      </p>
      <div class="example" id="example-34">
       <p><strong>Example # Using a negative <code class="parameter">length</code></strong></p>
       <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, -</span><span style="color: #0000BB">1</span><span style="color: #007700">);  </span><span style="color: #FF8000">// returns "abcde"<br /></span><span style="color: #0000BB">$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, -</span><span style="color: #0000BB">1</span><span style="color: #007700">);  </span><span style="color: #FF8000">// returns "cde"<br /></span><span style="color: #0000BB">$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, </span><span style="color: #0000BB">4</span><span style="color: #007700">, -</span><span style="color: #0000BB">4</span><span style="color: #007700">);  </span><span style="color: #FF8000">// returns ""; prior to PHP 8.0.0, false was returned<br /></span><span style="color: #0000BB">$rest </span><span style="color: #007700">= </span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #DD0000">"abcdef"</span><span style="color: #007700">, -</span><span style="color: #0000BB">3</span><span style="color: #007700">, -</span><span style="color: #0000BB">1</span><span style="color: #007700">); </span><span style="color: #FF8000">// returns "de"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
       </div>

      </div>


function_name: trim
name: characters
type: string
initializer: " \n\r\t\v\x00"
description:
<p class="para">
       Optionally, the stripped characters can also be specified using
       the <code class="parameter">characters</code> parameter.
       Simply list all characters that you want to be stripped. With
       <code class="literal">..</code> you can specify a range of characters.
      </p>


function_name: ucwords
name: separators
type: string
initializer: " \t\r\n\f\v"
description:
<p class="para">
       The optional <code class="parameter">separators</code> contains the word separator characters.
      </p>


function_name: wordwrap
name: break
type: string
initializer: "\n"
description:
<p class="para">
       The line is broken using the optional
       <code class="parameter">break</code> parameter.
      </p>


function_name: wordwrap
name: cut_long_words
type: bool
description:
<p class="para">
       If the <code class="parameter">cut_long_words</code> is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>, the string is
       always wrapped at or before the specified <code class="parameter">width</code>.  So if you have
       a word that is larger than the given width, it is broken apart.
       (See second example). When <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> the function does not split the word
       even if the <code class="parameter">width</code> is smaller than the word width.
      </p>


function_name: array_change_key_case
name: case
type: int
description:
<p class="para">
       Either <strong><code><a href="array.constants.html#constant.case-upper">CASE_UPPER</a></code></strong> or
       <strong><code><a href="array.constants.html#constant.case-lower">CASE_LOWER</a></code></strong> (default)
      </p>


function_name: array_chunk
name: preserve_keys
type: bool
description:
<p class="para">
       When set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> keys will be preserved.
       Default is <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> which will reindex the chunk numerically
      </p>


function_name: array_column
name: array
type: array
description:
<p class="para">
       A multi-dimensional array or an array of objects from which to pull a
       column of values from. If an array of objects is provided, then public
       properties can be directly pulled. In order for protected or private
       properties to be pulled, the class must implement both the
       <span class="function">__get</span> and <span class="function">__isset</span> magic
       methods.
      </p>


function_name: array_column
name: column_key
type: null
description:
<p class="para">
       The column of values to return. This value may be an integer key of the
       column you wish to retrieve, or it may be a string key name for an
       associative array or property name. It may also be <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to return
       complete arrays or objects (this is useful together with
       <code class="parameter">index_key</code> to reindex the array).
      </p>


function_name: array_column
name: index_key
type: null
description:
<p class="para">
       The column to use as the index/keys for the returned array. This value
       may be the integer key of the column, or it may be the string key name.
       The value is <a href="language.types.array.html#language.types.array.key-casts" class="link">cast</a>
       as usual for array keys (however, prior to PHP 8.0.0, objects supporting
       conversion to string were also allowed).
      </p>


function_name: array_combine
name: keys
type: array
description:
<p class="para">
       Array of keys to be used. Illegal values for key will be
       converted to <span class="type">string</span>.
      </p>


function_name: array_fill_keys
name: keys
type: array
description:
<p class="para">
       Array of values that will be used as keys. Illegal values
       for key will be converted to <span class="type">string</span>.
      </p>


function_name: array_fill
name: start_index
type: int
description:
<p class="para">
       The first index of the returned array.
      </p>
      <p class="para">
       If <code class="parameter">start_index</code> is negative, 
       the first index of the returned array will be 
       <code class="parameter">start_index</code> and the following 
       indices will start from zero prior to PHP 8.0.0;
       as of PHP 8.0.0, negative keys are incremented normally
       (see <a href="function.array-fill.html#function.array-fill.example.negative-start-index" class="link">example</a>).
      </p>


function_name: array_fill
name: count
type: int
description:
<p class="para">
       Number of elements to insert.
       Must be greater than or equal to zero, and less than or equal to <code class="literal">2147483647</code>.
      </p>


function_name: array_filter
name: callback
type: null
description:
<p class="simpara"><strong><code><a href="array.constants.html#constant.array-filter-use-both">ARRAY_FILTER_USE_BOTH</a></code></strong> - pass both value and key as
         arguments to <code class="parameter">callback</code> instead of the value</p>


function_name: array_filter
name: mode
type: int
description:
<p class="para">
       Flag determining what arguments are sent to <code class="parameter">callback</code>:
       <ul class="itemizedlist">
        <li class="listitem">
         <span class="simpara"><strong><code><a href="array.constants.html#constant.array-filter-use-key">ARRAY_FILTER_USE_KEY</a></code></strong> - pass key as the only argument
         to <code class="parameter">callback</code> instead of the value</span>
        </li>
        <li class="listitem">
         <span class="simpara"><strong><code><a href="array.constants.html#constant.array-filter-use-both">ARRAY_FILTER_USE_BOTH</a></code></strong> - pass both value and key as
         arguments to <code class="parameter">callback</code> instead of the value</span>
        </li>
       </ul>
       Default is <code class="literal">0</code> which will pass value as the only argument
       to <code class="parameter">callback</code> instead.
      </p>


function_name: array_keys
name: strict
type: bool
description:
<p class="para">
       Determines if strict comparison (===) should be used during the search.
      </p>


function_name: array_map
name: callback
type: null
description:
<p class="para">
       A <span class="type">callable</span> to run for each element in each array.
      </p>
      <p class="para">
       <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> can be passed as a value to <code class="parameter">callback</code>
       to perform a zip operation on multiple arrays.
       If only <code class="parameter">array</code> is provided,
        <span class="methodname">array_map</span> will return the input array.
      </p>


function_name: array_map
name: array
type: array
description:
<p class="para">
       An array to run through the <code class="parameter">callback</code> function.
      </p>


function_name: array_map
name: arrays
type: array
description:
<p class="para">
       Supplementary variable list of array arguments to run through the
       <code class="parameter">callback</code> function.
      </p>


function_name: array_multisort
name: array1_sort_order
type: mixed
initializer: SORT_ASC
description:
<p class="para">
       The order used to sort the previous <span class="type">array</span> argument. Either
       <strong><code><a href="array.constants.html#constant.sort-asc">SORT_ASC</a></code></strong> to sort ascendingly or <strong><code><a href="array.constants.html#constant.sort-desc">SORT_DESC</a></code></strong>
       to sort descendingly.
      </p>
      <p class="para">
       This argument can be swapped with <code class="parameter">array1_sort_flags</code>
       or omitted entirely, in which case <strong><code><a href="array.constants.html#constant.sort-asc">SORT_ASC</a></code></strong> is assumed.
      </p>


function_name: array_multisort
name: array1_sort_flags
type: mixed
initializer: SORT_REGULAR
description:
<p class="simpara">
          <strong><code><a href="array.constants.html#constant.sort-flag-case">SORT_FLAG_CASE</a></code></strong> - can be combined
          (bitwise OR) with
          <strong><code><a href="array.constants.html#constant.sort-string">SORT_STRING</a></code></strong> or
          <strong><code><a href="array.constants.html#constant.sort-natural">SORT_NATURAL</a></code></strong> to sort strings case-insensitively
         </p>


function_name: array_multisort
name: rest
type: mixed
description:
<p class="para">
       More arrays, optionally followed by sort order and flags. Only elements
       corresponding to equivalent elements in previous arrays are compared.
       In other words, the sort is lexicographical.
      </p>


function_name: array_pad
name: value
type: mixed
description:
<p class="para">
       Value to pad if <code class="parameter">array</code> is less than
       <code class="parameter">length</code>.
      </p>


function_name: array_push
name: values
type: mixed
description:
<p class="para">
       The values to push onto the end of the <code class="parameter">array</code>.
      </p>


function_name: array_rand
name: num
type: int
initializer: 1
description:
<p class="para">
       Specifies how many entries should be picked.
       Must be greater than zero, and less than or equal to the length of <code class="parameter">array</code>
      </p>


function_name: array_reduce
name: callback
type: callable
description:
<div class="methodsynopsis dc-description"><span class="type">mixed</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$carry</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$item</code></span>)</div>

      <dl>
       
        <dt><code class="parameter">carry</code></dt>
        <dd>
         <p class="para">
          Holds the return value of the previous iteration; in the case of the
          first iteration it instead holds the value of 
          <code class="parameter">initial</code>.
         </p>
        </dd>
       
       
        <dt><code class="parameter">item</code></dt>
        <dd>
         <p class="para">
          Holds the value of the current iteration.
         </p>
        </dd>
       
      </dl>


function_name: array_reduce
name: initial
type: mixed
description:
<p class="para">
       If the optional <code class="parameter">initial</code> is available, it will
       be used at the beginning of the process, or as a final result in case
       the array is empty.
      </p>


function_name: array_replace
name: replacements
type: array
description:
<p class="para">
       Arrays from which elements will be extracted.
       Values from later arrays overwrite the previous values.
      </p>


function_name: array_reverse
name: preserve_keys
type: bool
description:
<p class="para">
       If set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> numeric keys are preserved. 
       Non-numeric keys are not affected by this setting and will always be preserved.
      </p>


function_name: array_search
name: needle
type: mixed
description:
<p class="para">
       The searched value.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If <code class="parameter">needle</code> is a string, the comparison is done
        in a case-sensitive manner.
       </p>
      </p></blockquote>


function_name: array_search
name: strict
type: bool
description:
<p class="para">
       If the third parameter <code class="parameter">strict</code> is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>
       then the <span class="function">array_search</span> function will search for
       <em>identical</em> elements in the
       <code class="parameter">haystack</code>. This means it will also perform a
       <a href="language.types.html" class="link">strict type comparison</a> of the
       <code class="parameter">needle</code> in the <code class="parameter">haystack</code>,
       and objects must be the same instance.
      </p>


function_name: array_slice
name: offset
type: int
description:
<p class="para">
       If <code class="parameter">offset</code> is non-negative, the sequence will
       start at that offset in the <code class="parameter">array</code>.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is negative, the sequence will
       start that far from the end of the <code class="parameter">array</code>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        The <code class="parameter">offset</code> parameter denotes the position
        in the array, not the key.
       </p>
      </p></blockquote>


function_name: array_slice
name: length
type: null
description:
<p class="para">
       If <code class="parameter">length</code> is given and is positive,
       then the sequence will have up to that many elements in it.
      </p>
      <p class="para">
       If the array is shorter than the <code class="parameter">length</code>,
       then only the available array elements will be present.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is given and is negative then the
       sequence will stop that many elements from the end of the array.
      </p>
      <p class="para">
       If it is omitted, then the sequence will have everything
       from <code class="parameter">offset</code> up until the end of the
       <code class="parameter">array</code>.
      </p>


function_name: array_slice
name: preserve_keys
type: bool
description:
<blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        <span class="function">array_slice</span> will reorder and reset the
        integer array indices by default. This behaviour can be changed
        by setting <code class="parameter">preserve_keys</code> to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>.
        String keys are always preserved, regardless of this parameter.
       </p>
      </p></blockquote>


function_name: array_splice
name: offset
type: int
description:
<p class="para">
       If <code class="parameter">offset</code> is positive then the start of the
       removed portion is at that offset from the beginning of the
       <code class="parameter">array</code> array.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> is negative then the start of the
       removed portion is at that offset from the end of the
       <code class="parameter">array</code> array.
      </p>


function_name: array_splice
name: length
type: null
description:
<p class="para">
       If <code class="parameter">length</code> is omitted, removes everything
       from <code class="parameter">offset</code> to the end of the array.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is specified and is positive,
       then that many elements will be removed.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is specified and is negative,
       then the end of the removed portion will be that many elements
       from the end of the array.
      </p>
      <p class="para">
       If <code class="parameter">length</code> is specified and is zero,
       no elements will be removed.
      </p>
      <div class="tip"><strong class="tip">Tip</strong>
       <p class="para">
        To remove everything from <code class="parameter">offset</code> to the end of
        the array when <code class="parameter">replacement</code> is also specified,
        use <code class="code">count($input)</code> for <code class="parameter">length</code>.
       </p>
      </div>


function_name: array_splice
name: replacement
type: mixed
initializer: []
description:
<p class="para">
       If <code class="parameter">replacement</code> array is specified, then the
       removed elements are replaced with elements from this array.
      </p>
      <p class="para">
       If <code class="parameter">offset</code> and <code class="parameter">length</code>
       are such that nothing is removed, then the elements from the
       <code class="parameter">replacement</code> array are inserted in the place
       specified by the <code class="parameter">offset</code>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Keys in the <code class="parameter">replacement</code> array are not preserved.
        </p>
      </p></blockquote>
      <p class="para">
       If <code class="parameter">replacement</code> is just one element it is
       not necessary to put <code class="literal">array()</code> or square brackets
       around it, unless the element is an array itself, an object or <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong>.
      </p>


function_name: array_udiff_assoc
name: value_compare_func
type: callable
description:
<p class="para">
 The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
</p>
<div class="methodsynopsis dc-description"><span class="type">int</span> <span class="methodname"><span class="replaceable">callback</span></span>(<span class="methodparam"><span class="type">mixed</span> <code class="parameter">$a</code></span>, <span class="methodparam"><span class="type">mixed</span> <code class="parameter">$b</code></span>)</div>

<div class="caution"><strong class="caution">Caution</strong>
 <p class="para">
  Returning <em>non-integer</em> values from the comparison
  function, such as <span class="type">float</span>, will result in an internal cast to
  <span class="type">int</span> of the callback&#039;s return value. So values such as
  <code class="literal">0.99</code> and <code class="literal">0.1</code> will both be cast to an
  integer value of <code class="literal">0</code>, which will compare such values as equal.
 </p>
</div>
      <div class="caution"><strong class="caution">Caution</strong>
 <p class="para">
  The sorting callback must handle any value from any array in any order,
  regardless of the order they were originally provided.
  This is because each individual array is first sorted before being compared against other arrays.

  For example:
  <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$arrayA </span><span style="color: #007700">= [</span><span style="color: #DD0000">"string"</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">$arrayB </span><span style="color: #007700">= [[</span><span style="color: #DD0000">"value" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">1</span><span style="color: #007700">]];<br /></span><span style="color: #FF8000">// $item1 and $item2 can be any of "string", 1 or ["value" =&gt; 1]<br /></span><span style="color: #0000BB">$compareFunc </span><span style="color: #007700">= static function (</span><span style="color: #0000BB">$item1</span><span style="color: #007700">, </span><span style="color: #0000BB">$item2</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">$value1 </span><span style="color: #007700">= </span><span style="color: #0000BB">is_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$item1</span><span style="color: #007700">) ? </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$item1</span><span style="color: #007700">) : (</span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$item1</span><span style="color: #007700">) ? </span><span style="color: #0000BB">$item1</span><span style="color: #007700">[</span><span style="color: #DD0000">"value"</span><span style="color: #007700">] : </span><span style="color: #0000BB">$item1</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$value2 </span><span style="color: #007700">= </span><span style="color: #0000BB">is_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$item2</span><span style="color: #007700">) ? </span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$item2</span><span style="color: #007700">) : (</span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$item2</span><span style="color: #007700">) ? </span><span style="color: #0000BB">$item2</span><span style="color: #007700">[</span><span style="color: #DD0000">"value"</span><span style="color: #007700">] : </span><span style="color: #0000BB">$item2</span><span style="color: #007700">);<br />    return </span><span style="color: #0000BB">$value1 </span><span style="color: #007700">&lt;=&gt; </span><span style="color: #0000BB">$value2</span><span style="color: #007700">;<br />};<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>

 </p>
</div>


function_name: array_udiff_uassoc
name: key_compare_func
type: callable
description:
<p class="para">
       The comparison of keys (indices) is done also by the callback function
       <code class="parameter">key_compare_func</code>. This behaviour is unlike what
       <span class="function">array_udiff_assoc</span> does, since the latter compares
       the indices by using an internal function.
      </p>


function_name: array_unique
name: flags
type: int
description:
<p class="simpara"><strong><code><a href="array.constants.html#constant.sort-locale-string">SORT_LOCALE_STRING</a></code></strong> - compare items as
          strings, based on the current locale.
         </p>


function_name: array_walk_recursive
name: callback
type: callable
description:
<p class="para">
       Typically, <code class="parameter">callback</code> takes on two parameters.
       The <code class="parameter">array</code> parameter&#039;s value being the first, and
       the key/index second.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If <code class="parameter">callback</code> needs to be working with the
        actual values of the array, specify the first parameter of
        <code class="parameter">callback</code> as a
        <a href="language.references.html" class="link">reference</a>. Then,
        any changes made to those elements will be made in the
        original array itself.
       </p>
      </p></blockquote>


function_name: array_walk_recursive
name: arg
type: mixed
description:
<p class="para">
       If the optional <code class="parameter">arg</code> parameter is supplied,
       it will be passed as the third parameter to the
       <code class="parameter">callback</code>.
      </p>


function_name: array_walk
name: callback
type: callable
description:
<p class="para">
       Typically, <code class="parameter">callback</code> takes on two parameters.
       The <code class="parameter">array</code> parameter&#039;s value being the first, and
       the key/index second.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        If <code class="parameter">callback</code> needs to be working with the
        actual values of the array, specify the first parameter of
        <code class="parameter">callback</code> as a
        <a href="language.references.html" class="link">reference</a>. Then,
        any changes made to those elements will be made in the
        original array itself.
       </p>
      </p></blockquote>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="para">
          Many internal functions (for example <span class="function">strtolower</span>)
          will throw a warning if more than the expected number of argument
          are passed in and are not usable directly as a
          <code class="parameter">callback</code>.
        </p>
      </p></blockquote>
      <p class="para">
       Only the values of the <code class="parameter">array</code> may potentially be
       changed; its structure cannot be altered, i.e., the programmer cannot
       add, unset or reorder elements. If the callback does not respect this
       requirement, the behavior of this function is undefined, and      
       unpredictable.
      </p>


function_name: array
name: values
type: mixed
description:
<p class="para">
       Syntax &quot;index =&gt; values&quot;, separated by commas, define index
       and values. index may be of type string or integer. When index is
       omitted, an integer index is automatically generated, starting
       at 0. If index is an integer, next generated index will
       be the biggest integer index + 1. Note that when two identical
       indices are defined, the last overwrites the first.
      </p>
      <p class="para">
       Having a trailing comma after the last defined array entry, while
       unusual, is a valid syntax.
      </p>


function_name: compact
name: var_names
type: string
description:
<p class="para">
       <span class="function">compact</span> takes a variable number of parameters.
       Each parameter can be either a string containing the name of the
       variable, or an array of variable names.  The array can contain other
       arrays of variable names inside it; <span class="function">compact</span>
       handles it recursively.
      </p>


function_name: count
name: mode
type: int
description:
<p class="para">
       If the optional <code class="parameter">mode</code> parameter is set to
       <strong><code><a href="array.constants.html#constant.count-recursive">COUNT_RECURSIVE</a></code></strong> (or 1), <span class="function">count</span>
       will recursively count the array.  This is particularly useful for
       counting all the elements of a multidimensional array.
      </p>
      <div class="caution"><strong class="caution">Caution</strong>
       <p class="para">
        <span class="function">count</span> can detect recursion to avoid an infinite
        loop, but will emit an <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong> every time it
        does (in case the array contains itself more than once) and return a
        count higher than may be expected.
       </p>
      </div>


function_name: end
name: array
type: object
description:
<p class="para">
       The array.  This array is passed by reference because it is modified by
       the function.  This means you must pass it a real variable and not
       a function returning an array because only actual variables may be
       passed by reference.
      </p>


function_name: extract
name: array
type: array
description:
<p class="para">
       An associative array. This function treats keys as variable names and
       values as variable values.  For each key/value pair it will create a
       variable in the current symbol table, subject to
       <code class="parameter">flags</code> and <code class="parameter">prefix</code> parameters.
      </p>
      <p class="para">
       You must use an associative array; a numerically indexed array
       will not produce results unless you use <strong><code><a href="array.constants.html#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong> or
       <strong><code><a href="array.constants.html#constant.extr-prefix-invalid">EXTR_PREFIX_INVALID</a></code></strong>.
      </p>


function_name: extract
name: flags
type: int
description:
<p class="simpara">If there is a collision, prefix the variable name with
           <code class="parameter">prefix</code>.
          </p>


function_name: extract
name: prefix
type: string
initializer: ""
description:
<p class="para">
       Note that <code class="parameter">prefix</code> is only required if
       <code class="parameter">flags</code> is <strong><code><a href="array.constants.html#constant.extr-prefix-same">EXTR_PREFIX_SAME</a></code></strong>,
       <strong><code><a href="array.constants.html#constant.extr-prefix-all">EXTR_PREFIX_ALL</a></code></strong>, <strong><code><a href="array.constants.html#constant.extr-prefix-invalid">EXTR_PREFIX_INVALID</a></code></strong>
       or <strong><code><a href="array.constants.html#constant.extr-prefix-if-exists">EXTR_PREFIX_IF_EXISTS</a></code></strong>. If
       the prefixed result is not a valid variable name, it is not
       imported into the symbol table. Prefixes are automatically separated from
       the array key by an underscore character.
      </p>


function_name: in_array
name: strict
type: bool
description:
<p class="para">
       If the third parameter <code class="parameter">strict</code> is set to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong>
       then the <span class="function">in_array</span> function will also check the
       <a href="language.types.html" class="link">types</a> of the
       <code class="parameter">needle</code> in the <code class="parameter">haystack</code>.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Prior to PHP 8.0.0, a <code class="literal">string</code> <code class="parameter">needle</code> will match an array
        value of <code class="literal">0</code> in non-strict mode, and vice versa.  That may lead to undesireable
        results.  Similar edge cases exist for other types, as well.  If not absolutely certain of the
        types of values involved, always use the <code class="parameter">strict</code> flag to avoid unexpected behavior.
       </p>
      </p></blockquote>


function_name: range
name: step
type: float
initializer: 1
description:
<p class="para">
       <code class="parameter">step</code> indicates by how much is the produced
       sequence progressed between values of the sequence.
      </p>
      <p class="para">
       <code class="parameter">step</code> may be negative for decreasing sequences.
      </p>
      <p class="para">
       If <code class="parameter">step</code> is a <span class="type">float</span> without a
       fractional part, it is interpreted as <span class="type">int</span>.
      </p>


function_name: class_alias
name: autoload
type: bool
description:
<p class="para">
       Whether to <a href="language.oop5.autoload.html" class="link">autoload</a>
       if the original class is not found.
      </p>


function_name: class_exists
name: class
type: string
description:
<p class="para">
       The class name. The name is matched in a case-insensitive manner.
      </p>


function_name: get_class
name: object
type: object
description:
<p class="para">
       The tested object.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Explicitly passing <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> as the <code class="parameter">object</code> is no
        longer allowed as of PHP 7.2.0 and emits an <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong>.
        As of PHP 8.0.0, a <span class="classname">TypeError</span> is emitted when
        <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> is used.
       </span>
      </p></blockquote>


function_name: is_a
name: allow_string
type: bool
description:
<p class="para">
       If this parameter set to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>, string class name as <code class="parameter">object_or_class</code>
       is not allowed. This also prevents from calling autoloader if the class doesn&#039;t exist.
      </p>


function_name: is_subclass_of
name: object_or_class
type: mixed
description:
<p class="para">
       A class name or an object instance. No error is generated if the class does not exist.
      </p>


function_name: is_subclass_of
name: allow_string
type: bool
description:
<p class="para">
       If this parameter set to false, string class name as <code class="parameter">object_or_class</code>
       is not allowed. This also prevents from calling autoloader if the class doesn&#039;t exist.
      </p>


function_name: ctype_alnum
name: text
type: mixed
description:
<p class="para">
       The tested string.
       <blockquote class="note"><p><strong class="note">Note</strong>: <p class="para">
If an <span class="type">int</span> between -128 and 255 inclusive is provided, it is interpreted as
the ASCII value of a single character (negative values have 256 added in order to allow
characters in the Extended ASCII range). Any other integer is interpreted as a string
containing the decimal digits of the integer.</p></p></blockquote>
       <div class="warning"><strong class="warning">Warning</strong><p class="para">
As of PHP 8.1.0, passing a non-string argument is deprecated.
In the future, the argument will be interpreted as a string instead of an ASCII codepoint.
Depending on the intended behavior, the argument should either be cast to <span class="type">string</span>
or an explicit call to <span class="function">chr</span> should be made.</p></div>
      </p>


function_name: filter_has_var
name: input_type
type: int
description:
<p class="para">
       One of <strong><code><a href="filter.constants.html#constant.input-get">INPUT_GET</a></code></strong>, <strong><code><a href="filter.constants.html#constant.input-post">INPUT_POST</a></code></strong>,
       <strong><code><a href="filter.constants.html#constant.input-cookie">INPUT_COOKIE</a></code></strong>, <strong><code><a href="filter.constants.html#constant.input-server">INPUT_SERVER</a></code></strong>, or
       <strong><code><a href="filter.constants.html#constant.input-env">INPUT_ENV</a></code></strong>.
      </p>


function_name: filter_input_array
name: options
type: int
description:
<p class="para">
       An array defining the arguments. A valid key is a <span class="type">string</span>
       containing a variable name and a valid value is either a <a href="filter.filters.html" class="link">filter type</a>, or an <span class="type">array</span>
       optionally specifying the filter, flags and options. If the value is an
       array, valid keys are <code class="literal">filter</code> which specifies the
       <a href="filter.filters.html" class="link">filter type</a>,
       <code class="literal">flags</code> which specifies any flags that apply to the
       filter, and <code class="literal">options</code> which specifies any options that
       apply to the filter. See the example below for a better understanding.
      </p>
      <p class="para">
       This parameter can be also an integer holding a <a href="filter.constants.html" class="link">filter constant</a>. Then all values in the
       input array are filtered by this filter.
      </p>


function_name: filter_input_array
name: add_empty
type: bool
description:
<p class="para">
       Add missing keys as <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> to the return value.
      </p>


function_name: filter_input
name: filter
type: int
description:
<p class="para">
    The ID of the filter to apply. The <a href="filter.filters.html" class="xref">Types of filters</a>
    manual page lists the available filters.
   </p>
   <p class="para">
    If omitted, <strong><code><a href="filter.constants.html#constant.filter-default">FILTER_DEFAULT</a></code></strong> will be used, which is
    equivalent to
    <a href="filter.filters.sanitize.html" class="link"><strong><code><a href="filter.constants.html#constant.filter-unsafe-raw">FILTER_UNSAFE_RAW</a></code></strong></a>.
    This will result in no filtering taking place by default.
   </p>


function_name: filter_input
name: options
type: int
description:
<p class="para">
       Associative array of options or bitwise disjunction of flags. If filter
       accepts options, flags can be provided in &quot;flags&quot; field of array.
      </p>


function_name: filter_var_array
name: options
type: int
description:
<p class="para">
       An array defining the arguments. A valid key is a <span class="type">string</span>
       containing a variable name and a valid value is either a
       <a href="filter.filters.html" class="link">filter type</a>, or an
       <span class="type">array</span> optionally specifying the filter, flags and options.
       If the value is an array, valid keys are <code class="literal">filter</code>
       which specifies the <a href="filter.filters.html" class="link">filter type</a>,
       <code class="literal">flags</code> which specifies any flags that apply to the
       filter, and <code class="literal">options</code> which specifies any options that
       apply to the filter. See the example below for a better understanding.
      </p>
      <p class="para">
       This parameter can be also an integer holding a <a href="filter.constants.html" class="link">filter constant</a>. Then all values in the
       input array are filtered by this filter.
      </p>


function_name: filter_var
name: value
type: mixed
description:
<p class="para">
       Value to filter. Note that scalar values are <a href="language.types.string.html#language.types.string.casting" class="link">converted to
       string</a> internally before they are filtered.
      </p>


function_name: filter_var
name: options
type: int
description:
<p class="para">
       Associative array of options or bitwise disjunction of flags. If filter
       accepts options, flags can be provided in &quot;flags&quot; field of array. For
       the &quot;callback&quot; filter, <span class="type">callable</span> type should be passed.  The
       callback must accept one argument, the value to be filtered, and return
       the value after filtering/sanitizing it.
      </p>
      <p class="para">
       <div class="example-contents">
        <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// for filters that accept options, use this format<br /></span><span style="color: #0000BB">$options </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">'options' </span><span style="color: #007700">=&gt; array(<br />        </span><span style="color: #DD0000">'default' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #FF8000">// value to return if the filter fails<br />        // other options here<br />        </span><span style="color: #DD0000">'min_range' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0<br />    </span><span style="color: #007700">),<br />    </span><span style="color: #DD0000">'flags' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">FILTER_FLAG_ALLOW_OCTAL</span><span style="color: #007700">,<br />);<br /></span><span style="color: #0000BB">$var </span><span style="color: #007700">= </span><span style="color: #0000BB">filter_var</span><span style="color: #007700">(</span><span style="color: #DD0000">'0755'</span><span style="color: #007700">, </span><span style="color: #0000BB">FILTER_VALIDATE_INT</span><span style="color: #007700">, </span><span style="color: #0000BB">$options</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// for filters that only accept flags, you can pass them directly<br /></span><span style="color: #0000BB">$var </span><span style="color: #007700">= </span><span style="color: #0000BB">filter_var</span><span style="color: #007700">(</span><span style="color: #DD0000">'oops'</span><span style="color: #007700">, </span><span style="color: #0000BB">FILTER_VALIDATE_BOOLEAN</span><span style="color: #007700">, </span><span style="color: #0000BB">FILTER_NULL_ON_FAILURE</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// for filters that only accept flags, you can also pass as an array<br /></span><span style="color: #0000BB">$var </span><span style="color: #007700">= </span><span style="color: #0000BB">filter_var</span><span style="color: #007700">(</span><span style="color: #DD0000">'oops'</span><span style="color: #007700">, </span><span style="color: #0000BB">FILTER_VALIDATE_BOOLEAN</span><span style="color: #007700">,<br />                  array(</span><span style="color: #DD0000">'flags' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">FILTER_NULL_ON_FAILURE</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// callback validate filter<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #FF8000">// Expected format: Surname, GivenNames<br />    </span><span style="color: #007700">if (</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">, </span><span style="color: #DD0000">", "</span><span style="color: #007700">) === </span><span style="color: #0000BB">false</span><span style="color: #007700">) return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />    list(</span><span style="color: #0000BB">$surname</span><span style="color: #007700">, </span><span style="color: #0000BB">$givennames</span><span style="color: #007700">) = </span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">", "</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">$empty </span><span style="color: #007700">= (empty(</span><span style="color: #0000BB">$surname</span><span style="color: #007700">) || empty(</span><span style="color: #0000BB">$givennames</span><span style="color: #007700">));<br />    </span><span style="color: #0000BB">$notstrings </span><span style="color: #007700">= (!</span><span style="color: #0000BB">is_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$surname</span><span style="color: #007700">) || !</span><span style="color: #0000BB">is_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$givennames</span><span style="color: #007700">));<br />    if (</span><span style="color: #0000BB">$empty </span><span style="color: #007700">|| </span><span style="color: #0000BB">$notstrings</span><span style="color: #007700">) {<br />        return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />    } else {<br />        return </span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">$var </span><span style="color: #007700">= </span><span style="color: #0000BB">filter_var</span><span style="color: #007700">(</span><span style="color: #DD0000">'Doe, Jane Sue'</span><span style="color: #007700">, </span><span style="color: #0000BB">FILTER_CALLBACK</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'options' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'foo'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
       </div>

      </p>


function_name: call_user_func_array
name: args
type: array
description:
<p class="para">
       The parameters to be passed to the callback, as an array.
      </p>
      <p class="para">
        If the keys of <code class="parameter">args</code> are all numeric,
        the keys are ignored and each element will be passed to
        <code class="parameter">callback</code> as a positional argument, in
        order.
      </p>
      <p class="para">
        If any keys of <code class="parameter">args</code> are strings,
        those elements will be passed to <code class="parameter">callback</code>
        as named arguments, with the name given by the key.
      </p>
      <p class="para">
        It is a fatal error to have a numeric key in <code class="parameter">args</code>
        appear after a string key, or to have a string key that does not
        match the name of any parameter of <code class="parameter">callback</code>.
      </p>


function_name: call_user_func
name: args
type: mixed
description:
<p class="para">
       Zero or more parameters to be passed to the callback.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <p class="para">
        Note that the parameters for <span class="function">call_user_func</span> are
        not passed by reference.
        <div class="example" id="example-36">
         <p><strong>Example # <span class="function">call_user_func</span> example and references</strong></p>
         <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">E_ALL</span><span style="color: #007700">);<br />function </span><span style="color: #0000BB">increment</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$var</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #0000BB">$var</span><span style="color: #007700">++;<br />}<br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">call_user_func</span><span style="color: #007700">(</span><span style="color: #DD0000">'increment'</span><span style="color: #007700">, </span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// it is possible to use this instead<br /></span><span style="color: #0000BB">call_user_func_array</span><span style="color: #007700">(</span><span style="color: #DD0000">'increment'</span><span style="color: #007700">, array(&amp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">));<br />echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// it is also possible to use a variable function<br /></span><span style="color: #0000BB">$increment </span><span style="color: #007700">= </span><span style="color: #DD0000">'increment'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$increment</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
         </div>

         <div class="example-contents"><p>The above example will output:</p></div>
         <div class="example-contents screen">
<div class="cdata"><pre>
Warning: Parameter 1 to increment() expected to be a reference, value given in …
0
1
2
</pre></div>
         </div>
        </div>
       </p>
      </p></blockquote>


function_name: forward_static_call_array
name: callback
type: callable
description:
<p class="para">
       The function or method to be called. This parameter may be an <span class="type">array</span>,
       with the name of the class, and the method, or a <span class="type">string</span>, with a function
       name.
      </p>


function_name: forward_static_call
name: callback
type: callable
description:
<p class="para">
       The function or method to be called. This parameter may be an array,
       with the name of the class, and the method, or a string, with a function
       name.
      </p>


function_name: func_get_arg
name: position
type: int
description:
<p class="para">
       The argument offset. Function arguments are counted starting from
       zero.
      </p>


function_name: get_defined_functions
name: exclude_disabled
type: bool
description:
<p class="para">
      Whether disabled functions should be excluded from the return value.
     </p>


function_name: register_shutdown_function
name: callback
type: callable
description:
<p class="para">
       The shutdown callback to register.
      </p>
      <p class="para">
       The shutdown callbacks are executed as the part of the request, so
       it&#039;s possible to send output from them and access output buffers.
      </p>


function_name: register_shutdown_function
name: args
type: mixed
description:
<p class="para">
       It is possible to pass parameters to the shutdown function by passing
       additional parameters.
      </p>


function_name: QuickHashIntSet.__construct
name: size
type: int
description:
<p class="para">
       The amount of bucket lists to configure. The number you pass in will be
       automatically rounded up to the next power of two. It is also
       automatically limited from <code class="literal">4</code> to <code class="literal">4194304</code>.
      </p>


function_name: QuickHashIntSet.__construct
name: options
type: int
description:
<p class="para">
       The options that you can pass in are: <strong><code><a href="class.quickhashintset.html#quickhashintset.constants.check-for-dupes">QuickHashIntSet::CHECK_FOR_DUPES</a></code></strong>,
       which makes sure no duplicate entries are added to the set;
       <strong><code><a href="class.quickhashintset.html#quickhashintset.constants.do-not-use-zend-alloc">QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC</a></code></strong> to not use PHP&#039;s internal memory
       manager as well as one of <strong><code><a href="class.quickhashintset.html#quickhashintset.constants.hasher-no-hash">QuickHashIntSet::HASHER_NO_HASH</a></code></strong>,
       <strong><code><a href="class.quickhashintset.html#quickhashintset.constants.hasher-jenkins1">QuickHashIntSet::HASHER_JENKINS1</a></code></strong> or <strong><code><a href="class.quickhashintset.html#quickhashintset.constants.hasher-jenkins2">QuickHashIntSet::HASHER_JENKINS2</a></code></strong>.
       These last three configure which hashing algorithm to use. All options
       can be combined using bitmasks.
      </p>


function_name: QuickHashIntSet.loadFromFile
name: options
type: int
description:
<p class="para">
       The same options that the class&#039; constructor takes; except that the size
       option is ignored. It is automatically calculated to be the same as the
       number of entries in the set, rounded up to the nearest power of two
       with a maximum limit of <code class="literal">4194304</code>.
      </p>


function_name: QuickHashIntSet.loadFromString
name: options
type: int
description:
<p class="para">
       The same options that the class&#039; constructor takes; except that the size
       option is ignored. It is automatically calculated to be the same as the
       number of entries in the set, rounded up to the nearest power of two
       automatically limited from <code class="literal">64</code> to <code class="literal">4194304</code>.
      </p>


function_name: QuickHashIntHash.add
name: value
type: int
description:
<p class="para">
       The optional value of the entry to add. If no value is specified,
       <code class="literal">1</code> will be used.
      </p>


function_name: QuickHashIntHash.__construct
name: size
type: int
description:
<p class="para">
       The amount of bucket lists to configure. The number you pass in will be
       automatically rounded up to the next power of two. It is also
       automatically limited from <code class="literal">64</code> to <code class="literal">4194304</code>.
      </p>


function_name: QuickHashIntHash.__construct
name: options
type: int
description:
<p class="para">
       The options that you can pass in are: <strong><code><a href="class.quickhashinthash.html#quickhashinthash.constants.check-for-dupes">QuickHashIntHash::CHECK_FOR_DUPES</a></code></strong>,
       which makes sure no duplicate entries are added to the hash;
       <strong><code><a href="class.quickhashinthash.html#quickhashinthash.constants.do-not-use-zend-alloc">QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC</a></code></strong> to not use PHP&#039;s internal memory
       manager as well as one of <strong><code><a href="class.quickhashinthash.html#quickhashinthash.constants.hasher-no-hash">QuickHashIntHash::HASHER_NO_HASH</a></code></strong>,
       <strong><code><a href="class.quickhashinthash.html#quickhashinthash.constants.hasher-jenkins1">QuickHashIntHash::HASHER_JENKINS1</a></code></strong> or <strong><code><a href="class.quickhashinthash.html#quickhashinthash.constants.hasher-jenkins2">QuickHashIntHash::HASHER_JENKINS2</a></code></strong>.
       These last three configure which hashing algorithm to use. All options
       can be combined using bitmasks.
      </p>


function_name: QuickHashIntHash.loadFromFile
name: options
type: int
description:
<p class="para">
       The same options that the class&#039; constructor takes; except that the size
       option is ignored. It is automatically calculated to be the same as the
       number of entries in the hash, rounded up to the nearest power of two
       with a maximum limit of <code class="literal">4194304</code>.
      </p>


function_name: QuickHashStringIntHash.__construct
name: options
type: int
description:
<p class="para">
       The options that you can pass in are:
       <strong><code><a href="class.quickhashstringinthash.html#quickhashstringinthash.constants.check-for-dupes">QuickHashStringIntHash::CHECK_FOR_DUPES</a></code></strong>, which makes sure no duplicate
       entries are added to the hash and
       <strong><code><a href="class.quickhashstringinthash.html#quickhashstringinthash.constants.do-not-use-zend-alloc">QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC</a></code></strong> to not use PHP&#039;s internal
       memory manager.
      </p>


function_name: QuickHashStringIntHash.loadFromFile
name: options
type: int
description:
<p class="para">
       The same options that the class&#039; constructor takes; except that the size
       option is ignored. It is read from the file format (unlike the
       <span class="classname">QuickHashIntHash</span> and <span class="classname">QuickHashIntStringHash</span> classes, where it is
       automatically calculated from the number of entries in the hash.)
      </p>


function_name: QuickHashStringIntHash.loadFromString
name: size
type: int
description:
<p class="para">
       The amount of bucket lists to configure. The number you pass in will be
       automatically rounded up to the next power of two. It is also
       automatically limited from 4 to 4194304.
      </p>


function_name: QuickHashStringIntHash.loadFromString
name: options
type: int
description:
<p class="para">
       The same options that the class&#039; constructor takes; except that the size
       option is ignored. It is automatically calculated to be the same as the
       number of entries in the hash, rounded up to the nearest power of two
       with a maximum limit of 4194304.
      </p>


function_name: QuickHashStringIntHash.set
name: value
type: int
description:
<p class="para">
       The value of the entry to add. If a non-string is passed, it will be
       converted to a string automatically if possible.
      </p>


function_name: QuickHashStringIntHash.update
name: value
type: int
description:
<p class="para">
       The new value for the entry. If a non-string is passed, it will be
       converted to a string automatically if possible.
      </p>


function_name: QuickHashIntStringHash.__construct
name: options
type: int
description:
<p class="para">
       The options that you can pass in are: <strong><code><a href="class.quickhashintstringhash.html#quickhashintstringhash.constants.check-for-dupes">QuickHashIntStringHash::CHECK_FOR_DUPES</a></code></strong>,
       which makes sure no duplicate entries are added to the hash;
       <strong><code><a href="class.quickhashintstringhash.html#quickhashintstringhash.constants.do-not-use-zend-alloc">QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC</a></code></strong> to not use PHP&#039;s internal memory
       manager as well as one of <strong><code><a href="class.quickhashintstringhash.html#quickhashintstringhash.constants.hasher-no-hash">QuickHashIntStringHash::HASHER_NO_HASH</a></code></strong>,
       <strong><code><a href="class.quickhashintstringhash.html#quickhashintstringhash.constants.hasher-jenkins1">QuickHashIntStringHash::HASHER_JENKINS1</a></code></strong> or <strong><code><a href="class.quickhashintstringhash.html#quickhashintstringhash.constants.hasher-jenkins2">QuickHashIntStringHash::HASHER_JENKINS2</a></code></strong>.
       These last three configure which hashing algorithm to use. All options
       can be combined using bitmasks.
      </p>


function_name: Reflection.export
name: return
type: bool
description:
<p class="para">
       Setting to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> will return the export,
as opposed to emitting it. Setting to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> (the default) will do the opposite.
      </p>


function_name: ReflectionClass.__construct
name: objectOrClass
type: string
description:
<p class="para">
       Either a <span class="type">string</span> containing the name of the class to
       reflect, or an <span class="type">object</span>.
      </p>


function_name: ReflectionClass.getAttributes
name: name
type: null
description:
<p class="para">
  Filter the results to include only <span class="classname">ReflectionAttribute</span>
  instances for attributes matching this class name.
 </p>


function_name: ReflectionClass.getAttributes
name: flags
type: int
description:
<p class="para">
  Flags for determining how to filter the results, if <code class="parameter">name</code>
  is provided.
 </p>
 <p class="para">
  Default is <code class="literal">0</code> which will only return results for attributes that
  are of the class <code class="parameter">name</code>.
 </p>
 <p class="para">
  The only other option available, is to use <strong><code><a href="class.reflectionattribute.html#reflectionattribute.constants.is-instanceof">ReflectionAttribute::IS_INSTANCEOF</a></code></strong>,
  which will instead use <code class="literal">instanceof</code> for filtering.
 </p>


function_name: ReflectionClass.getConstants
name: filter
type: null
description:
<p class="para">
      The optional filter, for filtering desired constant visibilities. It&#039;s configured using
      the <a href="class.reflectionclassconstant.html#reflectionclassconstant.constants.modifiers" class="link">ReflectionClassConstant constants</a>,
      and defaults to all constant visibilities.
     </p>


function_name: ReflectionClass.getMethods
name: filter
type: null
description:
<p class="para">
       Filter the results to include only methods with certain attributes. Defaults
       to no filtering.
      </p>
      <p class="para">
       Any bitwise disjunction of <strong><code><a href="class.reflectionmethod.html#reflectionmethod.constants.is-static">ReflectionMethod::IS_STATIC</a></code></strong>,
       <strong><code><a href="class.reflectionmethod.html#reflectionmethod.constants.is-public">ReflectionMethod::IS_PUBLIC</a></code></strong>,
       <strong><code><a href="class.reflectionmethod.html#reflectionmethod.constants.is-protected">ReflectionMethod::IS_PROTECTED</a></code></strong>,
       <strong><code><a href="class.reflectionmethod.html#reflectionmethod.constants.is-private">ReflectionMethod::IS_PRIVATE</a></code></strong>,
       <strong><code><a href="class.reflectionmethod.html#reflectionmethod.constants.is-abstract">ReflectionMethod::IS_ABSTRACT</a></code></strong>,
       <strong><code><a href="class.reflectionmethod.html#reflectionmethod.constants.is-final">ReflectionMethod::IS_FINAL</a></code></strong>,
       so that all methods with <em>any</em> of the given
       attributes will be returned.
      </p>
      <blockquote class="note"><p><strong class="note">Note</strong>: 
       <span class="simpara">
        Note that other bitwise operations, for instance <code class="literal">~</code>
        will not work as expected. In other words, it is not possible to
        retrieve all non-static methods, for example.
       </span>
      </p></blockquote>


function_name: ReflectionClass.getProperties
name: filter
type: null
description:
<p class="para">
       The optional filter, for filtering desired property types. It&#039;s configured using
       the <a href="class.reflectionproperty.html#reflectionproperty.constants.modifiers" class="link">ReflectionProperty constants</a>,
       and defaults to all property types.
      </p>


function_name: ReflectionClass.getStaticPropertyValue
name: def_value
type: mixed
description:
<p class="para">
       A default value to return in case the class does not declare a static
       property with the given <code class="parameter">name</code>. If the property does
       not exist and this argument is omitted, a
       <span class="classname">ReflectionException</span> is thrown.
      </p>


function_name: ReflectionClass.isSubclassOf
name: class
type: string
description:
<p class="para">
       Either the name of the class as <span class="type">string</span> or
       a <span class="type">ReflectionClass</span> object of the class to check against.
      </p>


function_name: ReflectionClass.newInstance
name: args
type: mixed
description:
<p class="para">
       Accepts a variable number of arguments which are passed to the class
       constructor, much like <span class="function">call_user_func</span>.
      </p>


function_name: ReflectionClass.newInstanceArgs
name: args
type: array
initializer: []
description:
<p class="para">
       The parameters to be passed to the class constructor as an <span class="type">array</span>.
      </p>


function_name: ReflectionFunction.__construct
name: function
type: string
description:
<p class="para">
       The name of the function to reflect or a <a href="functions.anonymous.html" class="link">closure</a>.
      </p>


function_name: ReflectionFunction.invoke
name: args
type: mixed
description:
<p class="para">
       The passed in argument list. It accepts a variable number of
       arguments which are passed to the function much like
       <span class="function">call_user_func</span> is.
      </p>


function_name: ReflectionFunction.invokeArgs
name: args
type: array
description:
<p class="para">
       The passed arguments to the function as an array, much like 
       <span class="function">call_user_func_array</span> works.
      </p>


function_name: ReflectionMethod.__construct
name: objectOrMethod
type: string
description:
<p class="para">
       Classname or object (instance of the class) that contains the method.
      </p>


function_name: ReflectionMethod.__construct
name: classMethod
type: string
description:
<p class="para">
       Class name and method name delimited by <code class="literal">::</code>.
      </p>


function_name: ReflectionMethod.invoke
name: object
type: null
description:
<p class="para">
       The object to invoke the method on. For static methods, pass
       <span class="type">null</span> to this parameter.
      </p>


function_name: ReflectionMethod.invoke
name: args
type: mixed
description:
<p class="para">
       Zero or more parameters to be passed to the method.
       It accepts a variable number of parameters which are passed to the method.
      </p>


function_name: ReflectionMethod.invokeArgs
name: object
type: null
description:
<p class="para">
       The object to invoke the method on. In case of static methods, you can pass
       <span class="type">null</span> to this parameter.
      </p>


function_name: ReflectionMethod.invokeArgs
name: args
type: array
description:
<p class="para">
       The parameters to be passed to the function, as an <span class="type">array</span>.
      </p>


function_name: ReflectionMethod.setAccessible
name: accessible
type: bool
description:
<p class="para">
       <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> to allow accessibility, or <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong>.
      </p>


function_name: ReflectionObject.export
name: return
type: bool
description:
<p class="para">
       Setting to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> will return the export,
as opposed to emitting it. Setting to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> (the default) will do the opposite.       
      </p>


function_name: ReflectionParameter.__construct
name: param
type: string
description:
<p class="para">
       Either an <span class="type">int</span> specifying the position of the parameter (starting with
       zero), or the parameter name as <span class="type">string</span>.
      </p>


function_name: ReflectionProperty.__construct
name: class
type: string
description:
<p class="para">
       Either a string containing the name of the class to reflect, or an object.
      </p>


function_name: ReflectionProperty.export
name: return
type: bool
description:
<p class="para">
       Setting to <strong><code><a href="reserved.constants.html#constant.true">true</a></code></strong> will return the export,
as opposed to emitting it. Setting to <strong><code><a href="reserved.constants.html#constant.false">false</a></code></strong> (the default) will do the opposite.              
      </p>


function_name: ReflectionProperty.getValue
name: object
type: null
description:
<p class="para">
       If the property is non-static an object must be provided to fetch the
       property from. If you want to fetch the default property without
       providing an object use  <span class="methodname">ReflectionClass::getDefaultProperties</span>
       instead.
      </p>


function_name: ReflectionProperty.isInitialized
name: object
type: null
description:
<p class="para">
      If the property is non-static an object must be provided to fetch the
      property from.
     </p>


function_name: ReflectionProperty.setValue
name: object
type: object
description:
<p class="para">
       If the property is non-static an object must be provided to change
       the property on.
       If the property is static a value of <strong><code><a href="reserved.constants.html#constant.null">null</a></code></strong> <em>must</em> be to be provided.
      </p>


function_name: ReflectionGenerator.getTrace
name: options
type: int
description:
<p class="para">
       The value of <code class="parameter">options</code> can be any of
       the following flags.
      </p>
      <p class="para">
       <table class="doctable table">
        <caption><strong>Available options</strong></caption>
        
         <thead>
          <tr>
           <th>Option</th>
           <th>Description</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>
            <strong><code>DEBUG_BACKTRACE_PROVIDE_OBJECT</code></strong>
           </td>
           <td>
            Default.
           </td>
          </tr>

          <tr>
           <td>
            <strong><code>DEBUG_BACKTRACE_IGNORE_ARGS</code></strong>
           </td>
           <td>
            Don&#039;t include the argument information for functions in the stack
            trace.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>


function_name: ReflectionReference.fromArrayElement
name: array
type: array
description:
<p class="para">
      The <span class="type">array</span> which contains the potential reference.
     </p>


function_name: ReflectionReference.fromArrayElement
name: key
type: string
description:
<p class="para">
      The key; either an <span class="type">int</span> or a <span class="type">string</span>.
     </p>


function_name: boolval
name: value
type: mixed
description:
<p class="para">
      The scalar value being converted to a <span class="type">bool</span>.
     </p>


function_name: empty
name: var
type: mixed
description:
<p class="para">
       Variable to be checked
      </p>
      <p class="para">
       No warning is generated if the variable does not exist.
       That means <span class="function">empty</span> is essentially the
       concise equivalent to <strong class="command">!isset($var) || $var == false</strong>.
      </p>


function_name: floatval
name: value
type: mixed
description:
<p class="para">
       May be any scalar type. <span class="function">floatval</span> should not be used
       on objects, as doing so will emit an <strong><code><a href="errorfunc.constants.html#constant.e-warning">E_WARNING</a></code></strong> level
       error and return 1.
      </p>


