<h1 class=p1>Функции работы с URL</h1>
<table border="0" cellspacing="10">
    <tr valign="top">
        <td>
            <a class=bluelink href="#1" title="Функция обрабатывает URL и возвращает его компоненты" >parse_url()</a>&nbsp;<br>
            <a class=bluelink href="#2" title="Заносит компоненты URL в переменные">parse_str()</a>&nbsp;<br>
        </td>
        <td>
            <a class=bluelink href="#3" title="Функция кодирования URL">rawurlencode()</a>&nbsp;<br>        
            <a class=bluelink href="#4" title="Производит декодирование URL">rawurldecode()</a>&nbsp;<br>       
        </td>
        <td>
            <a class=bluelink href="#5" title="Функция кодирует данные в кодировке MIME base64">base64_encode()</a>&nbsp;<br>
            <a class=bluelink href="#6" title="Декодирует данные, закодированные в кодировке MIME base64">base64_decode()</a>&nbsp;<br>
        </td>
    </tr>
</table>
<br>

<a name=1></a>
<h1 class=p1>parse_url()</h1>
<p class=text>Функция обрабатывает URL и возвращает его компоненты.</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
array <b>parse_url</b><em class=gr>(</em>string <b>url</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Эта функция возвращает ассоциативный массив, включающий множество различных существующих компонентов URL: "scheme", "host", "port", "user", "pass", "path", "query" и "fragment".</p>
<p class=text>И если мы напишем вот такой скриптик</p>
<p class=prim><b><i>Пример:</i></b></p>
<blockquote><pre>
<em class=red>&lt;?</em>
   <b>$url</b> <em class=gr>=</em> "http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=softtime&lr="<em class=gr>;</em>
   <b>$arr</b> <em class=gr>=</em> parse_url<em class=gr>(</em><b>$url</b><em class=gr>);</em>
   print_r<em class=gr>(</em><b>$arr</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<p class=text>то получим следующий результат:</p>
<table border="0" summary="">
    <tr>
        <td colspan="2"><img src="images/gl3_2.gif" tppabs="http://site/bookphp/images/gl3_2.gif" border="0" width="399" height="90" alt=""></td>
    </tr>
    <tr><td width="20">&nbsp;</td>
        <td><p class=html>
            Array ( [scheme] => http [host] => www.google.com.ru [path] => /search [query] => hl=ru&ie=UTF-8&oe=UTF-8&q=softtime&lr= )      
        </td>
    </tr>
</table>
<br> 

<a name=2></a>
<h1 class=p1>parse_str()</h1>
<p class=text>Заносит компоненты URL в переменные.</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
void <b>parse_str</b><em class=gr>(</em>string <b>str</b> [, array <b>arr</b>]<em class=gr>)</em>
</pre></blockquote>
<p class=text>Функция <b>parse_str</b>() интерпретирует строку <b>str</b> так, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Т.е. функция устанавливает для этих переменных значения. Если задан второй необязательный параметр <b>arr</b>, то значения, найденные при помощи функции <b>parse_str</b>(), сохраняться не в глобальных переменных, а в элементах указанного массива. Пример приводить не буду, вроде все понятно.</p>
<br>

<a name=3></a>
<h1 class=p1>rawurlencode()</h1>
<p class=text>Функция кодирования URL.</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>rawurlencode</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Функция <b>rawurlencode</b> возвращает строку, в которой все не алфавитно-цифровые символы, за исключением дефиса "-", знака подчеркивания "_" и точки ".", заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры, обозначающие код символа. Кодирование нужно для того, чтобы буквенные символы не обрабатывались как разделители URL-строки и не искажались при передаче в сетях. </p>
<br>

<a name=4></a>
<h1 class=p1>rawurldecode()</h1>
<p class=text>Производит декодирование URL.</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>rawurldecode</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Думаю, что с этой функцией все понятно, добавлю лишь, что она аналогична функции <b>urldecode</b>(), но не воспринимает &quot;+&quot; как пробел. </p>
<p class=text>Давайте для примера на эти две функции что-нибудь закодируем и раскодируем.</p>
<blockquote><pre>
<em class=red>&lt;?</em>
   <b>$url</b> <em class=gr>=</em> "http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=софттайм&lr="<em class=gr>;</em>
   <em class=gr>echo(</em>"исходная строка: <b>$url</b>"<em class=gr>);echo(</em>"&lt;<b>br</b>>"<em class=gr>);</em>
   <em class=gr>echo(</em>"закодировали:"<em class=gr>);echo(</em>"&lt;<b>br</b>>"<em class=gr>);</em>
   <b>$url_code</b> <em class=gr>=</em> rawurlencode(<b>$url</b><em class=gr>);</em>
   <em class=gr>echo(</em><b>$url_code</b><em class=gr>);echo(</em>"&lt;<b>br</b>>"<em class=gr>);</em>
   <em class=gr>echo(</em>"и раскодировали:"<em class=gr>);echo(</em>"&lt;<b>br</b>>"<em class=gr>);</em>
   <b>$url_decode</b> <em class=gr>=</em> rawurldecode<em class=gr>(</em><b>$url_code</b><em class=gr>);</em>
   <em class=gr>echo(</em><b>$url_decode</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<p class=text>И вот что получилось:</p>
<table border="0" summary="">
    <tr>
        <td colspan="2"><img src="images/gl3_2.gif" tppabs="http://site/bookphp/images/gl3_2.gif" border="0" width="399" height="90" alt=""></td>
    </tr>
    <tr><td width="20">&nbsp;</td>
        <td><p class=html>
            исходная строка: http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=софттайм&lr=
закодировали:
http%3A%2F%2Fwww.google.com.ru%2Fsearch%3Fhl%3Dru%26ie%3DUTF-8%26oe%3DUTF-8%26q%3D%F1%EE%F4%F2%F2%E0%E9%EC%26lr%3D
и раскодировали:
http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=софттайм&lr= 

        </td>
    </tr>
</table>
<br> 

<a name=5></a>
<h1 class=p1>base64_encode()</h1>
<p class=text>Функция кодирует данные в кодировке <i>MIME base64</i>.</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>base64_encode</b><em class=gr>(</em>string <b>data</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Функция <b>base64_encode</b>() возвращает строку, переданную в параметре <b>data</b> в кодировке <i>MIME base64</i>. </p>
<p class=text>Кодировка <i>MIME base64</i> разработана для передачи двоичных данных через транспортные слои, которые не содержат восьмой бит, к примеру,  как почтовые тела. Заметим, что данные в кодировке <i>Base64</i> занимают примерно на 30% больше места, чем оригинал.</p> 
<br>

<a name=6></a>
<h1 class=p1>base64_decode()</h1>
<p class=text>Декодирует данные, закодированные в кодировке <i>MIME base64</i>.</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>base64_decode</b><em class=gr>(</em>string <b>encoded_data</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Функция <b>base64_decode</b>() декодирует <b>encoded_data</b> и возвращает оригинал данных. Пример приводить не буду – все просто, и, поверьте, работает.</p>

<br><br>
