|
райтесь применять ее везде, где есть
хоть малейшее подозрение на наличие ошибочных пробелов. Поскольку работает она
очень быстро.
string ltrim(string $st)
То же, что и trim(), только удаляет исключительно ведущие пробелы, а концевые
не
трогает. Используется гораздо реже. Старайтесь всегда вместо нее применять
trim(), и не прогадаете.
string chop(string $st)
Удаляет только концевые пробелы, ведущие не трогает. Эта функция будет
наверняка
очень популярной у тех, кто раньше программировал на Perl. Однако следует заме-
тить, что в PHP она выполняет другую функцию.
Базовые функции
int strlen(string $st)
Одна из наиболее полезных функций. Возвращает просто длину строки, т. е.,
сколько
символов содержится в $st. Как уже упоминалось, строка может содержать любые
символы, в том числе и с нулевым кодом (что запрещено в Си). Функция strlen()
будет правильно работать и с такими строками.
int strpos(string $where, string $what, int $fromwhere=0)
Пытается найти в строке $where подстроку (то есть последовательность символов)
$what и в случае успеха возвращает позицию (индекс) этой подстроки в строке.
Пер-
Часть IV. Стандартные функции PHP 212
вый символ строки, как и в Си, имеет индекс 0. Необязательный параметр
$fromwhere можно задавать, если поиск нужно вести не с начала строки $from, а с
какой-то другой позиции. В этом случае следует эту позицию передать в
$fromwhere. Если подстроку найти не удалось, функция возвращает false. Однако
будьте внимательны, проверяя результат вызова strpos() на false — используйте
ля этого только оператор ===.
string substr(string $str, int $from [,int $length])
Данная функция тоже востребуется очень часто. Ее назначение — возвращать уча-
сток строки $str, начиная с позиции $start и длиной $length. Если $length не
задана, то подразумевается подстрока от $start до конца строки $str. Если
$start
больше, чем длина строки, или же значение $length равно нулю, то возвращается
пустая подстрока.
Однако эта функция может делать и еще довольно полезные вещи. К примеру, если
мы передадим в $start отрицательное число, то будет считаться, что это число
яв-
ляется индексом подстроки, но только отсчитываемым от конца $str (например, -1
означает "начиная с последнего символа строки"). Параметр $length, если он
задан,
тоже может быть отрицательным. В этом случае последним символом возвращенной
подстроки будет символ из $str с индексом $length, определяемым от конца стро-
ки.
int strcmp(string $str1, string $str2)
Сравнивает две строки посимвольно (точнее, побайтово) и возвращает: 0, если
строки
полностью совпадают; -1, если строка $str1 лексикографически меньше $str2; и 1,
если, наоборот, $str1 "больше" $str2. Так как сравнение идет побайтово, то ре-
гистр символов влияет на результаты сравнений.
int strcasecmp(string $str1, string $str2)
То же самое, что и strcmp(), только при работе не учитывается регистр букв. На-
пример, с точки зрения этой функции "ab" и "AB" равны.
Если ваша строка состоит только из "английских" букв, проблем не будет. Од-
нако в случае использования "русских" букв результат (точнее, правильность)
работы функции strcasecmp() сильно зависит от настроек текущей локали
(см. ниже).
Работа с блоками текста
Перечисленные ниже функции чаще всего оказываются полезны, если нужно прово-
дить однотипные операции с многострочными блоками текста, заданными в строко-
вой переменной.
Глава 12. Строковые функции 213
string str_replace(string $from, string $to, string $str)
Заменяет в строке $str все вхождения подстроки $from (с учетом регистра) на $to
и
возвращает результат. Исходная строка, переданная третьим параметром, при этом
не
меняется. Эта функция работает значительно быстрее, чем ereg_replace(), кото-
рую мы рассмотрим в главе о регулярных выражениях PHP, и ее часто используют,
если нет необходимости в каких-то экзотических правилах поиска подстроки.
Напри-
мер, вот так мы можем заместить все символы перевода строки на их HTML-
эквивалент — тэг :
$st=str_replace("\n"," \n",$st)
Как видим, то, что в строке
|
|