[ZF-10089] Zend_Log
[zend.git] / documentation / manual / zh / module_specs / Zend_Validate-Hostname.xml
blob1e9cd6a3f965bf467eb27130d96535cb92a2c83c
1 <sect2 id="zend.validate.set.hostnames">
3     <title>主机名</title>
5     <para>
6         Zend_Validate_Hostname允许你根据一组已知的规范来校验主机名。它检查三种不同的主机名:DNS主机名(例如domain.com),IP地址(例如1.2.3.4),和本地主机名(例如localhost)。缺省地,只有DNS主机名被匹配。
7     </para>
9     <para>
10         <emphasis role="strong">基本用法</emphasis>
11     </para>
13     <para>
14         一个基本用法的例子如下:
16         <programlisting role="php"><![CDATA[<?php
17 require_once 'Zend/Validate/Hostname.php';
18 $validator = new Zend_Validate_Hostname();
19 if ($validator->isValid($hostname)) {
20     // hostname appears to be valid
21 } else {
22     // hostname is invalid; print the reasons
23     foreach ($validator->getMessages() as $message) {
24         echo "$message\n";
25     }
28 ]]>
29         </programlisting>
31         这个例子匹配主机名<code>$hostname</code>并在匹配失败的时候用<code>$validator->getMessages()</code>来获得有用的错误信息。
33     </para>
35     <para>
36         <emphasis role="strong">校验不同类型的主机名</emphasis>
37     </para>
39     <para>
40         你可能发现你也想匹配IP地址,本地主机名,或者是所有允许类型的组合。这个可以在当你实例化它的时候通过传递参数给Zend_Validate_Hostname来实现。 参数应该是一个整型数,它来决定哪种主机名被允许。我们鼓励你使用常量。
41     </para>
43     <para>
44         Zend_Validate_Hostname 常量是: <code>ALLOW_DNS</code> 允许DNS主机名,
45         <code>ALLOW_IP</code> 允许IP地址, <code>ALLOW_LOCAL</code> 允许本地网络名,和<code>ALLOW_ALL</code> 允许所有三种类型。 你可以用下面的例子仅仅检查IP地址:
47         <programlisting role="php"><![CDATA[<?php
48 require_once 'Zend/Validate/Hostname.php';
49 $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
50 if ($validator->isValid($hostname)) {
51     // hostname appears to be valid
52 } else {
53     // hostname is invalid; print the reasons
54     foreach ($validator->getMessages() as $message) {
55         echo "$message\n";
56     }
59 ]]>
60         </programlisting>
61     </para>
63     <para>
64         你可以用这些类型的组合,也可以用<code>ALLOW_ALL</code>来接受所有主机名类型。例如,你可以通过如下例子实例化Zend_Validate_Hostname对象来接受DNS和本地主机名:
65         <programlisting role="php"><![CDATA[<?php
67 $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);}]]>
68         </programlisting>
70     </para>
72     <para>
73         <emphasis role="strong">校验国际域名</emphasis>
74     </para>
76     <para>
77         一些国家代码顶级域名(ccTLDs),例如'de'(德国),在域名中支持国际字符。这些就是大家所知的国际域名(IDN)。这些域名可以用Zend_Validate_Hostname通过用于校验处理的扩展字符来匹配。
78     </para>
80     <para>
81         目前支持ccTLDs的有:
83         <itemizedlist>
84                 <listitem>
85                     <para>at (Austria)</para>
86                 </listitem>
87                 <listitem>
88                     <para>ch (Switzerland)</para>
89                 </listitem>
90                 <listitem>
91                     <para>li (Liechtenstein)</para>
92                 </listitem>
93                 <listitem>
94                     <para>de (Germany)</para>
95                 </listitem>
96                 <listitem>
97                     <para>fi (Finland)</para>
98                 </listitem>
99                 <listitem>
100                     <para>hu (Hungary)</para>
101                 </listitem>
102                 <listitem>
103                     <para>no (Norway)</para>
104                 </listitem>
105                 <listitem>
106                     <para>se (Sweden)</para>
107                 </listitem>
108         </itemizedlist>
110     </para>
112     <para>
113         匹配IDN域名就像使用标准主机名校验器一样简单,因为IDN匹配是缺省激活的。如果你想禁止IDN校验,可以通过传递参数给Zend_validate_Hostname构造器或通过<code>$validator->setValidateIdn()</code>方法来实现。
114     </para>
116     <para>
117         你可以象下面通过传递第二个参数给Zend_Validate_Hostname构造器来禁止IDN校验。
118         <programlisting role="php"><![CDATA[<?php
120 $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, false);]]>
121         </programlisting>
123         另外你可以通过传递 TRUE 或 FALSE 给 <code>$validator->setValidateIdn()</code> 来激活或者禁止 IDN 校验。如果你试图匹配一个当前不被支持的IDN主机名,并且如果有国际字符在其中,校验很可能会失败。当指定附加字符的ccTLD文件在Zend/Validate/Hostname下不存在时,一个正常的主机名校验将被执行。(这就是在解释上句话中为什么校验会失败,Jason 注)
124     </para>
126     <para>
127         请注意只有当你允许DNS主机名被校验,IDNs才能被校验。
128     </para>
130     <para>
131         <emphasis role="strong">校验顶级域名</emphasis>
132     </para>
134     <para>
135         缺省地主机名通过已知的TLDs列表来检查。如果不需要这个功能,它可以被禁止,就像禁止IDN支持一样。你可以通过传递第三个参数给Zend_Validate_Hostname构造器来禁止TLD校验。在下面的例子中,我们通过第二个参数来支持IDN校验。
137         <programlisting role="php"><![CDATA[<?php
139 $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, true, false);]]>
140         </programlisting>
142         另外,你可以通过传递 TRUE 或 FALSE 给
143         <code>$validator->setValidateTld()</code> 来激活或禁止 TLD 校验。
144     </para>
146     <para>
147         请注意只有当你允许DNS主机名被校验,TLDs才能被校验。
148     </para>
150 </sect2>
151 <!--
152 vim:se ts=4 sw=4 et: