PageRenderTime 40ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/php/function.parse-url.html

https://bitbucket.org/stillzhl/manuals
HTML | 277 lines | 237 code | 40 blank | 0 comment | 0 complexity | 6f02683a6c88425fd039d1b6e576e20c MD5 | raw file
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  5. <title>解析 URL返回其组成部分</title>
  6. </head>
  7. <body><div class="manualnavbar" style="text-align: center;">
  8. <div class="prev" style="text-align: left; float: left;"><a href="function.http-build-query.html">http_build_query</a></div>
  9. <div class="next" style="text-align: right; float: right;"><a href="function.rawurldecode.html">rawurldecode</a></div>
  10. <div class="up"><a href="ref.url.html">URL 函数</a></div>
  11. <div class="home"><a href="index.html">PHP Manual</a></div>
  12. </div><hr /><div id="function.parse-url" class="refentry">
  13. <div class="refnamediv">
  14. <h1 class="refname">parse_url</h1>
  15. <p class="verinfo">(PHP 4, PHP 5)</p><p class="refpurpose"><span class="refname">parse_url</span> &mdash; <span class="dc-title">解析 URL返回其组成部分</span></p>
  16. </div>
  17. <div class="refsect1 description" id="refsect1-function.parse-url-description">
  18. <h3 class="title">说明</h3>
  19. <div class="methodsynopsis dc-description">
  20. <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <span class="methodname"><strong>parse_url</strong></span>
  21. ( <span class="methodparam"><span class="type">string</span> <code class="parameter">$url</code></span>
  22. [, <span class="methodparam"><span class="type">int</span> <code class="parameter">$component</code><span class="initializer"> = -1</span></span>
  23. ] )</div>
  24. <p class="para rdfs-comment">
  25. 本函数解析一个 URL 并返回一个关联数组包含在 URL 中出现的各种组成部分
  26. </p>
  27. <p class="para">
  28. 本函数<em class="emphasis">不是</em>用来验证给定 URL
  29. 的合法性的只是将其分解为下面列出的部分不完整的 URL
  30. 也被接受 <span class="function"><strong>parse_url()</strong></span> 会尝试尽量正确地将其解析
  31. </p>
  32. </div>
  33. <div class="refsect1 parameters" id="refsect1-function.parse-url-parameters">
  34. <h3 class="title">参数</h3>
  35. <p class="para">
  36. <dl>
  37. <dt>
  38. <span class="term"><em><code class="parameter">url</code></em></span>
  39. <dd>
  40. <p class="para">
  41. 要解析的 URL无效字符将使用
  42. <em>_</em> 来替换
  43. </p>
  44. </dd>
  45. </dt>
  46. </dl>
  47. <dl>
  48. <dt>
  49. <span class="term"><em><code class="parameter">component</code></em></span>
  50. <dd>
  51. <p class="para">
  52. 指定 <strong><code>PHP_URL_SCHEME</code></strong>
  53. <strong><code>PHP_URL_HOST</code></strong> <strong><code>PHP_URL_PORT</code></strong>
  54. <strong><code>PHP_URL_USER</code></strong> <strong><code>PHP_URL_PASS</code></strong>
  55. <strong><code>PHP_URL_PATH</code></strong> <strong><code>PHP_URL_QUERY</code></strong>
  56. <strong><code>PHP_URL_FRAGMENT</code></strong> 的其中一个来获取 URL 中指定的部分的 <span class="type"><a href="language.types.string.html" class="type string">string</a></span> 除了指定为 <strong><code>PHP_URL_PORT</code></strong> 将返回一个 <span class="type"><a href="language.types.integer.html" class="type integer">integer</a></span> 的值
  57. </p>
  58. </dd>
  59. </dt>
  60. </dl>
  61. </p>
  62. </div>
  63. <div class="refsect1 returnvalues" id="refsect1-function.parse-url-returnvalues">
  64. <h3 class="title">返回值</h3>
  65. <p class="para">
  66. 对严重不合格的 URL <span class="function"><strong>parse_url()</strong></span> 可能会返回
  67. <strong><code>FALSE</code></strong>
  68. </p>
  69. <p class="para">
  70. 如果省略了 <em><code class="parameter">component</code></em> 参数将返回一个关联数组 <span class="type"><a href="language.types.array.html" class="type array">array</a></span>在目前至少会有一个元素在该数组中数组中可能的键有以下几种
  71. <ul class="itemizedlist">
  72. <li class="listitem">
  73. <span class="simpara">
  74. <var class="varname"><var class="varname">scheme</var></var> - http
  75. </span>
  76. </li>
  77. <li class="listitem">
  78. <span class="simpara">
  79. <var class="varname"><var class="varname">host</var></var>
  80. </span>
  81. </li>
  82. <li class="listitem">
  83. <span class="simpara">
  84. <var class="varname"><var class="varname">port</var></var>
  85. </span>
  86. </li>
  87. <li class="listitem">
  88. <span class="simpara">
  89. <var class="varname"><var class="varname">user</var></var>
  90. </span>
  91. </li>
  92. <li class="listitem">
  93. <span class="simpara">
  94. <var class="varname"><var class="varname">pass</var></var>
  95. </span>
  96. </li>
  97. <li class="listitem">
  98. <span class="simpara">
  99. <var class="varname"><var class="varname">path</var></var>
  100. </span>
  101. </li>
  102. <li class="listitem">
  103. <span class="simpara">
  104. <var class="varname"><var class="varname">query</var></var> - 在问号 <em>?</em> 之后
  105. </span>
  106. </li>
  107. <li class="listitem">
  108. <span class="simpara">
  109. <var class="varname"><var class="varname">fragment</var></var> - 在散列符号 <em>#</em> 之后
  110. </span>
  111. </li>
  112. </ul>
  113. </p>
  114. <p class="para">
  115. 如果指定了 <em><code class="parameter">component</code></em> 参数
  116. <span class="function"><strong>parse_url()</strong></span> 返回一个 <span class="type"><a href="language.types.string.html" class="type string">string</a></span> 或在指定为 <strong><code>PHP_URL_PORT</code></strong> 时返回一个 <span class="type"><a href="language.types.integer.html" class="type integer">integer</a></span>而不是 <span class="type"><a href="language.types.array.html" class="type array">array</a></span>如果 URL 中指定的组成部分不存在将会返回 <strong><code>NULL</code></strong>
  117. </p>
  118. </div>
  119. <div class="refsect1 changelog" id="refsect1-function.parse-url-changelog">
  120. <h3 class="title">更新日志</h3>
  121. <p class="para">
  122. <table class="doctable informaltable">
  123. <thead>
  124. <tr>
  125. <th>版本</th>
  126. <th>说明</th>
  127. </tr>
  128. </thead>
  129. <tbody class="tbody">
  130. <tr>
  131. <td>5.4.7</td>
  132. <td>
  133. 修复了 <em class="emphasis">host</em> <em class="emphasis">协议</em> 省略时的识别
  134. </td>
  135. </tr>
  136. <tr>
  137. <td>5.3.3</td>
  138. <td>
  139. URL 解析失败时将不会产生 <strong><code>E_WARNING</code></strong> 级别的错误
  140. </td>
  141. </tr>
  142. <tr>
  143. <td>5.1.2</td>
  144. <td>增加了参数 <em><code class="parameter">component</code></em></td>
  145. </tr>
  146. </tbody>
  147. </table>
  148. </p>
  149. </div>
  150. <div class="refsect1 examples" id="refsect1-function.parse-url-examples">
  151. <h3 class="title">范例</h3>
  152. <p class="para">
  153. <div class="example" id="example-3878">
  154. <p><strong>Example #1 <span class="function"><strong>parse_url()</strong></span> 例子</strong></p>
  155. <div class="example-contents">
  156. <div class="phpcode"><code><span style="color: #000000">
  157. <span style="color: #0000BB">&lt;?php<br />$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'http://username:password@hostname/path?arg=value#anchor'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">parse_url</span><span style="color: #007700">(</span><span style="color: #0000BB">$url</span><span style="color: #007700">));<br /><br />echo&nbsp;</span><span style="color: #0000BB">parse_url</span><span style="color: #007700">(</span><span style="color: #0000BB">$url</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">PHP_URL_PATH</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
  158. </span>
  159. </code></div>
  160. </div>
  161. <div class="example-contents"><p>以上例程会输出</p></div>
  162. <div class="example-contents screen">
  163. <div class="cdata"><pre>
  164. Array
  165. (
  166. [scheme] =&gt; http
  167. [host] =&gt; hostname
  168. [user] =&gt; username
  169. [pass] =&gt; password
  170. [path] =&gt; /path
  171. [query] =&gt; arg=value
  172. [fragment] =&gt; anchor
  173. )
  174. /path
  175. </pre></div>
  176. </div>
  177. </div>
  178. </p>
  179. <p class="para">
  180. <div class="example" id="example-3879">
  181. <p><strong>Example #2 <span class="function"><strong>parse_url()</strong></span> 解析丢失协议的例子</strong></p>
  182. <div class="example-contents">
  183. <div class="phpcode"><code><span style="color: #000000">
  184. <span style="color: #0000BB">&lt;?php<br />$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'//www.example.com/path?googleguy=googley'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;在&nbsp;5.4.7&nbsp;之前这会输出路径&nbsp;"//www.example.com/path"<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">parse_url</span><span style="color: #007700">(</span><span style="color: #0000BB">$url</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span>
  185. </span>
  186. </code></div>
  187. </div>
  188. <div class="example-contents"><p>以上例程会输出</p></div>
  189. <div class="example-contents screen">
  190. <div class="cdata"><pre>
  191. array(3) {
  192. [&quot;host&quot;]=&gt;
  193. string(15) &quot;www.example.com&quot;
  194. [&quot;path&quot;]=&gt;
  195. string(5) &quot;/path&quot;
  196. [&quot;query&quot;]=&gt;
  197. string(17) &quot;googleguy=googley&quot;
  198. }
  199. </pre></div>
  200. </div>
  201. </div>
  202. </p>
  203. </div>
  204. <div class="refsect1 notes" id="refsect1-function.parse-url-notes">
  205. <h3 class="title">注释</h3>
  206. <blockquote class="note"><p><strong class="note">Note</strong>:
  207. <p class="para">
  208. 本函数不能用于相对 URL
  209. </p>
  210. </p></blockquote>
  211. <blockquote class="note"><p><strong class="note">Note</strong>:
  212. <p class="para">
  213. <span class="function"><strong>parse_url()</strong></span> 是专门用来解析 URL 而不是 URI 不过为遵从 PHP
  214. 向后兼容的需要有个例外 file:// 协议允许三个斜线(file:///...)。其它任何协议都不能这样。
  215. </p>
  216. </p></blockquote>
  217. </div>
  218. <div class="refsect1 seealso" id="refsect1-function.parse-url-seealso">
  219. <h3 class="title">参见</h3>
  220. <p class="para">
  221. <ul class="simplelist">
  222. <li class="member"> <span class="function"><a href="function.pathinfo.html" class="function" rel="rdfs-seeAlso">pathinfo()</a> - 返回文件路径的信息</span></li>
  223. <li class="member"> <span class="function"><a href="function.parse-str.html" class="function" rel="rdfs-seeAlso">parse_str()</a> - 将字符串解析成多个变量</span></li>
  224. <li class="member"> <span class="function"><a href="function.http-build-query.html" class="function" rel="rdfs-seeAlso">http_build_query()</a> - 生成 URL-encode 之后的请求字符串</span></li>
  225. <li class="member"> <span class="function"><a href="function.http-build-url.html" class="function" rel="rdfs-seeAlso">http_build_url()</a> - 产生一个 URL</span></li>
  226. <li class="member"> <span class="function"><a href="function.dirname.html" class="function" rel="rdfs-seeAlso">dirname()</a> - 返回路径中的目录部分</span></li>
  227. <li class="member"> <span class="function"><a href="function.basename.html" class="function" rel="rdfs-seeAlso">basename()</a> - 返回路径中的文件名部分</span></li>
  228. <li class="member"><a href="http://www.faqs.org/rfcs/rfc3986" class="link external">&raquo;&nbsp;RFC 3986</a></li>
  229. </ul>
  230. </p>
  231. </div>
  232. </div><hr /><div class="manualnavbar" style="text-align: center;">
  233. <div class="prev" style="text-align: left; float: left;"><a href="function.http-build-query.html">http_build_query</a></div>
  234. <div class="next" style="text-align: right; float: right;"><a href="function.rawurldecode.html">rawurldecode</a></div>
  235. <div class="up"><a href="ref.url.html">URL 函数</a></div>
  236. <div class="home"><a href="index.html">PHP Manual</a></div>
  237. </div></body></html>