Анимация
JavaScript
|
Главная Библионтека string str replace(string $from, string $to, string $str) Заменяет в строке $str все вхождения подстроки $from (с учетом регистра) на $to и возвращает результат. Исходная строка, переданная третьим параметром, при этом не меняется. Эта функция работает значительно быстрее, чем ereg replace() , которую мы рассмотрим в главе о регулярных выражениях PHP, и ее часто используют, если нет необходимости в каких-то экзотических правилах поиска подстроки. Например, вот так мы можем заместить все символы перевода строки на их HTML-эквивалент - тэг <br>: $st=str replace("\n","<br>\n",$st) Как видим, то, что в строке <br>\n тоже есть символ перевода строки, никак не влияет на работу функции, т. е. функция производит лишь однократный проход по строке. Для решения описанной задачи также применима функция nl2br(), которая работает чуть быстрее. string nl2br(string $string) Заменяет в строке все символы новой строки \n на <br>\n и возвращает результат. Исходная строка не изменяется. Обратите внимание на то, что символы \r, которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте. string WordWrap(string $st, int $width=75, string $break="\n") Эта функция, наконец-то появившаяся в PHP версии 4, оказывается невероятно полезной при форматировании текста письма перед автоматической отправкой его адресату при помощи mail() . Она разбивает блок текста $st на несколько строк, завершаемых символами $break, так, чтобы на одной строке было не более $width букв. Разбиение происходит по границе слова, так что текст остается читаемым. Возвращается получившаяся строка с символами перевода строки, заданными в $break. Давайте рассмотрим пример, как мы можем отформатировать некоторый текст по ширине поля 60 символов, предварив каждую строку префиксом ">" (то есть, оформить его как цитирование, принятое в электронной переписке): function Cite($OurText, $prefix="> ") { $st=WordWrap($OurText, 60-strlen($prefix), "\n"); $st=$prefix.str replace("\n","\n$prefix",$st); можно было бы сделать это и одной операцией, но так, по-моему, несколько универсальнее. return $st; string strip tags (string $str [, string $allowable tags]) Эта функция удаляет из строки все тэги и возвращает результат. В параметре $allowable tags можно передать тэги, которые не следует удалять из строки. Они должны перечисляться вплотную друг к другу. Вот пример: $st=" <Ь>Жирн1й текст</b> <tt>МоношириннIЙ текст</tt> <a href=http: www.dklab.ru>СсIлка</a>"; echo "Исходн1й текст: $st"; echo "<hr>После удаления тэгов: ".strip tags($st,"<a><b>")."<hr>"; Запустив этот пример, мы сможем заметить, что тэги <a> и <b> не были удалены (ровно как и их парные закрывающие), в то время как <tt> исчез. string str repeat(string $st, string $number) Функция "повторяет" строку $st $number раз и возвращает объединенный результат. Вот пример: echo str repeat("test!",3); в1водит test!test!test! функции для преобразований символов Web-программирование - одна из тех областей, в которых постоянно приходится манипулировать строками: разрывать их, добавлять и удалять пробелы, перекодировать в разные кодировки, наконец, URL-кодировать и декодировать. В PHP реализовать все эти действия вручную, используя только уже описанные примитивы, просто невозможно из соображений быстродействия. Поэтому-то и существуют встроенные функции, описанные в этом разделе. string strtr(string $str, string $from, string $to) Эта функция применяется не столь широко, но все-таки иногда она бывает довольно полезной. Делает она вот что: в строке $str заменяет все символы, встречающиеся в $from, на их "парные" (то есть расположенные в тех же позициях, что и во $from) из $to. Функция работает существенно быстрее, чем ereg replace() , которую мы рассмотрим в главе, посвященной регулярным выражениям. Правде, она имеет вместе с тем несколько меньшую функциональность... Следующие несколько функций предназначены для быстрого URL-кодирования и декодирования. string UrlEncode(string $st) Функция URL-кодирует строку $st и возвращает результат. Эту функцию удобно применять, если вы, например, хотите динамически сформировать ссылку <a href=... > на какой-то сценарий, но не уверены, что его параметры содержат только алфавитно-цифровые символы. В этом случае воспользуйтесь функцией так: echo "<a href=/script.php?param=".UrlEncode($UserData); Теперь, даже если переменная $UserData включает символы =, & или даже пробелы, все равно сценарию будут переданы корректные данные. string UrlDecode(string $st) Производит URL-декодирование строки. В принципе, используется значительно реже, чем UrlEncode(), потому что PHP и так умеет перекодировать входные данные автоматически. string RawUrlEncode(string $st) Почти полностью аналогична UrlEncode() , но только пробелы не преобразуются в +, как это делается при передаче данных из формы, а воспринимаются как обычные неалфавитно-цифровые символы. Впрочем, этот метод не порождает никаких дополнительных несовместимостей в коде. string RawUrlDecode(string $st) Аналогична UrlDecode(), но не воспринимает + как пробел. Давайте теперь рассмотрим функцию, которая обычно используется в комбинации с echo . Основное ее назначение - гарантировать, что в выводимой строке ни один участок не будет воспринят как тэг. string HtmlSpecialChars(string $str) Заменяет в строке некоторые символы (такие как амперсант, кавычки и знаки "больше" и "меньше") на их HTML-эквиваленты, так, чтобы они выглядели на странице " самими собой". Самое типичное применение этой функции - формирование параметра value в различных элементах формы, чтобы не было никаких проблем с кавычками, или же вывод сообщения в гостевой книге, если вставлять тэги пользователю запрещено. Например, пусть содержимое книги хранится в массиве $Book в очевидном формате. Тогда следующий фрагмент распечатывает содержимое гостевой книги, заботясь о том, чтобы тэги не воспринимались браузером как описания форматирования: <?foreach($Book as $k=>$v) {?> Имя: <?=$v[name]?><br> Текст: <?=HtmlSpecialChars($v[text])?> <hr> <?}?> Используя этот незамысловатый прием, вы гарантированно избавите себя от проблем с запретом тэгов. 0 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |