1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.14 $ -->
<!-- splitted from ./en/functions/network.xml, last change in rev 1.18 -->
<refentry id="function.ip2long">
<refnamediv>
<refname>ip2long</refname>
<refpurpose>
Converts a string containing an (IPv4) Internet Protocol dotted address
into a proper address
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>int</type><methodname>ip2long</methodname>
<methodparam><type>string</type><parameter>ip_address</parameter></methodparam>
</methodsynopsis>
<para>
The function <function>ip2long</function> generates an IPv4 Internet
network address from its Internet standard format (dotted string)
representation. If <parameter>ip_address</parameter> is invalid then
<literal>-1</literal> is returned. Note that <literal>-1</literal>
does not evaluate as &false; in PHP.
</para>
<note>
<para>
As of PHP 5.0.0 <function>ip2long</function> returns &false; when
<parameter>ip_address</parameter> is invalid.
</para>
</note>
<example>
<title><function>ip2long</function> Example</title>
<programlisting role="php">
<![CDATA[
<?php
$ip = gethostbyname('www.example.com');
$out = "The following URLs are equivalent:<br />\n";
$out .= 'http://www.example.com/, http://' . $ip . '/, and http://' . sprintf("%u", ip2long($ip)) . "/<br />\n";
echo $out;
?>
]]>
</programlisting>
</example>
<para>
<note>
<para>
Because PHP's integer type is signed, and many IP addresses will
result in negative integers, you need to use the "%u" formatter of
<function>sprintf</function> or <function>printf</function> to get
the string representation of the unsigned IP address.
</para>
</note>
</para>
<para>
This second example shows how to print a converted address with the
<function>printf</function> function in both PHP 4 and PHP 5:
</para>
<example>
<title>Displaying an IP address</title>
<programlisting role="php">
<![CDATA[
<?php
$ip = gethostbyname('www.example.com');
$long = ip2long($ip);
if ($long == -1 || $long === FALSE) {
echo 'Invalid IP, please try again';
} else {
echo $ip . "\n"; // 192.0.34.166
echo $long . "\n"; // -1073732954
printf("%u\n", ip2long($ip)); // 3221234342
}
?>
]]>
</programlisting>
</example>
<para>
<function>ip2long</function> should not be used as the sole form
of IP validation. Combine it with <function>long2ip</function>:
</para>
<example>
<title>IP validation</title>
<programlisting role="php">
<![CDATA[
<?php
// make sure IPs are valid. also converts a non-complete IP into
// a proper dotted quad as explained below.
$ip = long2ip(ip2long("127.0.0.1")); // "127.0.0.1"
$ip = long2ip(ip2long("10.0.0")); // "10.0.0.0"
$ip = long2ip(ip2long("10.0.256")); // "10.0.1.0"
?>
]]>
</programlisting>
</example>
<para>
<function>ip2long</function> will also work with non-complete IP
addresses. Read <ulink url="&url.ip2long.tech;">&url.ip2long.tech;</ulink>
for more info.
</para>
<note>
<para>
<function>ip2long</function> will return &false; for the IP
<literal>255.255.255.255</literal> in PHP 5 <= 5.0.2. It was fixed in
PHP 5.0.3 where it returns <literal>-1</literal> (same as PHP 4).
</para>
</note>
<para>
See also <function>long2ip</function> and
<function>sprintf</function>.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|