﻿<h1 class=p1>Функции работы с блоками текста</h1>
<br>
<table border="0" cellspacing="10">
    <tr valign="top">
        <td>
            <a class=bluelink href="#1" title="Функция разбиения исходного текста на строки с определенными завершающими символами">wordwrap()</a>&nbsp;<br>
            <a class=bluelink href="#2" title="Функция замены подстроки в исходной строке">str_replace()</a>&nbsp;<br>
            <a class=bluelink href="#3" title="Функция замены подстрок в исходной строке">substr_replace()</a>&nbsp;<br>
        </td>
        <td>
            <a class=bluelink href="#4" title="Функция комплексной замены в строке">strtr()</a>&nbsp;<br>       
            <a class=bluelink href="#5" title="Функция удаления обратных слешей">stripslashes()</a>&nbsp;<br>
            <a class=bluelink href="#6" title="Функция преобразования спецсимволов в их двоичное представление">stripcslashes()</a>&nbsp;<br>
        </td>
        <td>
            <a class=bluelink href="#7" title='Функция добавления слешей перед символами строки "," и \'>addslashes()</a>&nbsp;<br>     
            <a class=bluelink href="#8" title="Функция добавление слешей перед специальными символами строки">addcslashes()</a>&nbsp;<br>
            <a class=bluelink href="#9" title="Функция цитирования метасимволов">quotemeta()</a>&nbsp;<br>
        </td>
        <td>
            <a class=bluelink href="#10" title="Функция реверса строки">strrev()</a>&nbsp;<br>          
        </td>
    </tr>
</table>
<br>
<a name=1></a>
<h1 class=p1>wordwrap()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>wordwrap</b><em class=gr>(</em>string <b>str</b> [, int <b>width</b> [, string <b>break</b> [, int <b>cut</b>]]]<em class=gr>)</em>
</pre></blockquote>
<p class=text>Функция <b>wordwrap()</b> разбивает исходный текст на строки с определенными завершающими символами. Согласно синтаксису, эта функция разбивает блок текста <b>str</b> на несколько строк, которые завершаеются символами <b>break</b>, так, чтобы в одной строке было не более <b>width</b> букв. Поскольку разбиение происходит по границам слов, текст остается вполне читаемым.
<p class=prim><b><i>К примеру:</i></b></p>
<blockquote><pre>
<em class=red>&lt;?</em>
   <b>$str</b><em class=gr> = </em>"Вставай, страна огромная"<em class=gr>;</em>
   <b>$mod_str</b><em class=gr> = </em><b>wordwrap</b><em class=gr>(</em><b>$str</b>,5,"\t"<em class=gr>);</em>
   <em class=gr>echo(</em><b>$mod_str</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<br><br>
<a name=2></a>
<h1 class=p1>str_replace()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>str_replace</b><em class=gr>(</em>string <b>from</b>, string <b>to</b>, string <b>str</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Функция <b>str_replace()</b> заменяет в исходной строке str одни подстроки на другие. Т.е. функция заменяет в строке <b>str</b> все вхождения подстроки <b>from</b> на <b>to</b> и возвращает результат. Эта функция может работать с двоичными строками.</p>
<p class=text>Функция, вообще говоря, нужная. К примеру, если Вы пишите что-то типа гостевой книги, форума, и хотите, чтобы в форме ввода для выделения теста можно было пользоваться стандарными тегами HTML, Вы можете с помощью этой функции заменить символы, которые Вы выбрали для форматирования на стандартные теги  НТML. К примеру:</p>
<blockquote><pre>
   <b>$txt</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[B]","&lt;B>",<b>$txt</b><em class=gr>);</em>
</pre></blockquote>     
<p class=text>Т.е. если Вы используете для отображения текста полужирным шрифтом символы "[B]", Вы должны их заменить на символ "&lt;B>", используемые в НТМL.</p>
<p class=text>Позже, при написании реального проекта, мы обязательно будем использовать как эту, так и многие другие, рассмотренные нами функции.</p>

<br><br>
<a name=3></a>
<h1 class=p1>substr_replace()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>substr_replace</b><em class=gr>(</em>string <b>str</b>, string <b>replacement</b>, int <b>start</b> [, int <b>length</b>]<em class=gr>)</em>
</pre></blockquote>
<p class=text>Эта функция заменяет в исходной строке одни подстроки на другие. Она возвращает строку <b>str</b>, в которой часть от символа с позицией <b>start</b> и длиной <b>length</b>  заменяется строкой <b>replacement</b>. Если аргумент длины <b>length</b> не указан, замена проводится до конца.</p>
<p class=text>Если значение аргумента <b>start</b> положительно, то отсчет производится от начала строки <b>str</b>, в противном случае - от конца. В случае неотрицательного значения <b>length</b>, оно указывает длину заменяемого фрагмента. Если же оно отрицательно, то это - число символов от конца строки <b>str</b> до последнего символа заменяемого фрагмента.</p>

<br><br>
<a name=4></a>
<h1 class=p1>strtr()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>strtr</b><em class=gr>(</em>string <b>str</b>, string <b>from</b>, string <b>to</b><em class=gr>)</em><br>
string <b>strtr</b><em class=gr>(</em>string <b>str</b>, array <b>from</b><em class=gr>)</em>
</pre></blockquote>
<p class=text>Эта функция предназначена для комплексной замены в строке и имеет два вида синтаксиса. В первом случае функция <b>strtr()</b> возвращает строку <b>str</b>, в которой каждый символ, присутствующий в строке <b>from</b>, заменяется на символ из строки <b>to</b>. Если строки <b>from</b> и <b>to</b> различной длины, то лишние конечные символы у той строки, которая длинее, игнорируются. Во втором случае функция <b>strtr()</b> возвращает строку, в которой фрагменты строки <b>str</b> заменяются на фрагменты, соответствующие индексам значений элементов массива <b>from</b>. Сначала функция пытается заменить наибольшие фрагменты исходной строки, при этом не выполняя замену в уже модифицированных частях строки. Таким образом, можно выполнить несколько замен сразу:</p>
<blockquote><pre>
<em class=red>&lt;?</em>
   <b>$str</b><em class=gr> = </em><b>array</b><em class=gr>(</em>"<name1>" <em class=gr>=></em> "M.Kuznetsov",
             "&lt;name2>" <em class=gr>=></em> "I.Simdyanov"<em class=gr>);</em>
   <b>$str_out</b> = "Авторы этого учебника <name1> и <name2> приветствуют вас!";
   <em class=gr>echo</em> <b>strtr</b><em class=gr>(</em><b>$str_out</b>,<b>$str</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>

<p class=text>А вот как можно при помощи этой функции отменить действие функции <b>htmlspecialchars()</b>: </p>
<blockquote><pre>
<em class=red>&lt;?</em>
   <b>$var</b> <em class=gr>=</em> <b>array_flip</b><em class=gr>(</em><b>get_html_translation_table</b>()<em class=gr>);</em>
   <b>$str</b> <em class=gr>=</em> <b>strtr</b><em class=gr>(</em><b>$str</b>, <b>$var</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<p class=text>Т.е., из строки, в которой все спецсимволы заменены на их HTML-эквиваленты, мы получаме исходную строку.</p>

<br><br>
<a name=5></a>
<h1 class=p1>stripslashes()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>stripslashes</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em><br>
</pre></blockquote>
<p class=text>Функция удаления обратных слешей. Т.е. производится замена в строке <b>str</b> предваренных слешем символов на их кодовые эквиваленты. Функция работает с символами: ", ", \. </p>

<br><br>
<a name=6></a>
<h1 class=p1>stripcslashes()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>stripcslashes</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em><br>
</pre></blockquote>
<p class=text>А эта функция преобразует спецсимволы в их двоичное представление.</p>
<p class=text>Она возвращает строку, в которой закомментированные обратным слешем спецсимволы, (с целью визуального отображения), преобразуются в их двоичное представление. Функция распознает C-подобные записи (восьмеричные и шестнадцатеричные последовательности <b>\n</b>, <b>\r</b> и т.д.).</p>

<br><br>
<a name=7></a>
<h1 class=p1>addslashes()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>addslashes</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em><br>
</pre></blockquote>
<p class=text>Функция добавления слешей перед символами строки "," и \. Эту функцию удобно использовать при вызове функции <b>eval()</b>.</p>

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

<br><br>
<a name=9></a>
<h1 class=p1>quotemeta()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>quotemeta</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em><br>
</pre></blockquote>
<p class=text>Функция цитирования метасимволов. Возвращает строку, в которую добавлены обратные слеши  перед каждым из следующих символов: . \\ + * ? [ ^ ] ( $ ).  Функцию можно использовать для подготовки шаблонов в регулярных выражениях.</p>

<br><br>
<a name=10></a>
<h1 class=p1>strrev()</h1>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
string <b>strrev</b><em class=gr>(</em>string <b>str</b><em class=gr>)</em><br>
</pre></blockquote>
<p class=text>Функция производит реверс строки.</p>
<br><br>