Справочник по PHP - white cat
Шрифт:
Интервал:
Закладка:
Однако эта функция может делать и еще довольно полезные вещи. К примеру, если мы передадим в start отрицательное число, то будет считаться, что это число является индексом подстроки, но только отсчитываемым от конца str (например, -1 означает "начинается с последнего символа строки").
Параметр length, если он задан, тоже может быть отрицательным. В этом случае последним символом возвращаемой подстроки будет символ из str с индексом length, определяемым от конца строки.
$str = substr("abcdef", 1); // возвратит "bcdef"
$str = substr("abcdef", 1, 3); // возвратит "bcd"
$str = substr("abcdef", -1); // возвратит "f"
$str = substr("abcdef", -2); // возвратит "ef"
$str = substr("abcdef", -3, 1); // возвратит "d"
$str = substr("abcdef", 1, -1); // возвратит "bcde"
str_repeat
Повторяет строку определенное количество раз.
Синтаксис:
string str_repeat(string str, int number)
Функция "повторяет" строку str number раз и возвращает объединенный результат.
echo str_repeat("test!",3); // выводит test!test!test!
str_pad
Дополняет строку другой строкой до определенной длины.
Синтаксис:
string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])
Аргумент input задает исходную строку. Аргумент pad_length задает длину возвращаемой строки. Если он имеет значение меньше, чем исходная строка, то никакого добавления не производится.
При помощи необязательного аргумента pad_string можно указать, какую строку использовать в качестве заполнителя (по умолчанию - пробелы).
При помощи необязательного аргумента pad_type можно указать, с какой стороны следует дополнять строку: справо, слево или с обеих сторон.
Этот аргумент может принимать следующие значения:
$str = "Aaaaa";
echo str_pad($str, 10);
// возвратит "Aaaaa"
echo str_pad($str, 10, "-=", STR_PAD_LEFT);
// возвратит "-=-=-Aaaaa"
echo str_pad($str, 10, "_", STR_PAD_BOTH)
// возвратит "_Aaaa_"
chunk_split
Возвращает фрагмент строки.
Синтаксис:
string chunk_split(string str [, int chunklen [, string end]])
Функция chunk_split() возвращает строку, в которой между каждым блоком строки str длиной chunklen (по умолчанию 76) вставляется последовательность разделителей end (по умолчанию: "rn").
Данная функция может быть полезна при конвертировании в формат "base64" для соответствия правилам RFC 2045.
// отформатируем $data, используя семантику RFC 2045
$str = chunk_split(base64_encode($data));
Эта функция работает значительно быстрее, чем ereg_replace().
strtok
Возвращает строку по частям.
Синтаксис:
string strtok(string arg1, string arg2)
Функция возвращает часть строки arg1 до разделителя arg2. При последующих вызовах возвращается следующая часть до следующего разделителя, и так до конца строки. При первом вызове функция принимает два аргумента: исходную строку arg1 и разделитель arg2. При каждом последующем вызове аргумент arg1 указывать не надо, иначе будет возвращаться первая часть строки. Когда возвращать больше нечего, функция вернет false. Если часть строки состоит из 0 или из пустой строки, то функция также вернет false.
$str="This is an example№string№ Aaa";
$tok = strtok($str, " ");
while($tok) {
echo "$tok";
$tok = strtok(" №");
};
// выведет: "This" "is" "an" "example" "string"
Надо заметить, что в качестве разделителей указывается последовательность символов, каждый из которых в отдельности может являться разделителем, но когда в строке последовательно встречаются два или более разделителей, функция возвращает пустую строку (что может прекратить цикл обработки, как в примере).
explode
Производит разделение строки в массив.
Синтаксис:
array explode(string seperator, string str [, int limit])
Функция explode() возвращает массив строк, каждая из которых соответствует фрагменту исходной строки str, находящемуся между разделителями, указанными аргументом separator.
Необязательный параметр limit указывает максимальное количество элементов в массиве. Оставшаяся неразделенная часть будет содержаться в последнем элементе.
$str = "Path1 Path2 Path3 Path4";
$str_exp = explode(" ", $str);
// теперь $str_exp = array([0] => Path1, [1] => Path2,
// [2] => Path3, [3] => '', [4] => Path4)
implode
Производит объединение массива в строку.
Синтаксис:
string implode(string glue, array pieces)
Функция implode() возвращает строку, которая содержит последовательно все элементы массива, заданного в параметре pieces, между которыми вставляется значение, указанное в параметре glue.
$str = implode(":", $arr);
join
Производит объединение массива в строку.
Синтаксис:
string join(string glue, array pieces)
То же, что и implode().
Работа с блоками текста
str_replace
Заменяет в исходной строке одни подстроки на другие.
Синтаксис:
string str_replace(string from, string to, string str)
Эта функция заменяет в строке str все вхождения подстроки from (с учетом регистра) на to и возвращает результат. Исходная строка, переданная третьим параметром, при этом не меняется.
Также эта функция может работать с двоичными строками.
substr_replace
Заменяет в исходной строке одни подстроки на другие.
Синтаксис:
string substr_replace(string str, string replacement, int start [, int lemgth])
Эта функция возвращает строку str, в которой часть от символа с позицией start и длиной length (или до конца, если аргумент длины не указан) заменяется строкой replacement.
Если значение start положительно, отсчет производится от начала строки str, иначе - от конца (-1 - последний символ строки).
Если значение length неотрицательное, тогда оно указывает длину заменяемого фрагмента. Если оно отрицательно, то это число символов от конца строки str до последнего символа заменяемого фрагмента (со знаком минус).
wordwrap
Разбивает исходный текст на строки с определенными завершающими символами.
Синтаксис:
string wordwrap(string str [, int width [, string break [, int cut]]])
Эта функция разбивает блок текста str на несколько строк, завершаемых символами break, так, чтобы на одной строке было не более width букв. Разбиение происходит по границе слова, так что текст остается читаемым.
strtr
Комплексная замена в строке.
Синтаксис:
string strtr(string str, string from, string to)string strtr(string str, array from)
В первом случае функция strtr() возвращает строку str, у которой каждый символ, присутствующий в строку from, заменяется на корреспондирующий из строки to. В случае, если строки from и to различной длины, то лишние конечные символы длинной строки игнорируются.
Во втором случае функция strtr() возвращает строку, в которой фрагменты строки str заменяются на соответствующие индексам значения элементов массива from. При этом функция пытается заменить сначало наибольшие фрагменты исходной строки и не выполняет замену в уже модифицированных частях строки. Таким образом, теперь мы можем выполнить несколько замен сразу:
$Subs = array(
"<name>" => "Larry",
"<time>" => date("d.m.Y")
);
$st="Привет, <name>! Сейчас <time";
echo strtr($st,$Subs);
А вот как можно "отменить" действие функции HtmlSpecialChars():
$Trans=array_flip(get_html_translation_table());
$st=strtr($st, $Trans);
В результате мы из строки, в которой все спецсимволы заменены на их HTML-эквиваленты, получим исходную строку.
stripslashes
Удаление обратных слешей.
Синтаксис:
string stripslashes(string str);
Заменяет в строке str некоторые предваренные слешем символы на их однокодовые эквиваленты. Это относится к следующим символам: ", ", .
stripcslashes
Преобразование специальных символов в их двоичное представление.
Синтаксис:
string stripcslashes(string str);
Возвращает строку, в которой те специальные символы, которые закомментированы (для визуального отображения) обратным слешем, преобразуются в их естественное двоичное представление. Распознаются C-подобные записи, например: n, r ..., восьмеричные и шестнадцатеричные последовательности.
addslashes
Добавление слешей перед специальными символами строки.