Определение длины строки и преобразование символов/кодов
Strlen()
int strlen ( string string )
Возвращает длину строки, которую принимает в качестве аргумента (пример 4.7.3.1.1):
<?
$string = "Hello, world!!!";
$string_len = strlen($string);
echo ($string_len);
?>
Chr()
string chr ( int ascii )
Принимает в качестве аргумента ASCII код символа и возвращает соответствующий этому коду фактический символ (пример 4.7.3.2.1):
<?
$str = chr(36);
echo ($str); // возвращает символ "$"
?>
Ord()
int ord ( string string )
Выполняет действие, обратное функции chr() (пример 4.7.3.3.1):
<?
$str = ord('$');
echo($str); // возвращает 36
?>
Trim-функции
Это очень полезная группа функций, без которых сложно обойтись при работе со строками. К пробельным символам относятся символы
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
Trim()
string trim ( string str [, string charlist] )
Принимает в качестве своего единственного аргумента строку, и удаляет из нее пробелы слева и справа.
Пример (4.7.4.1.1):
<?
$string = trim(" Hello, world! ");
?>
<?
$str = " Hello, world! ";
$str1 = trim(" Hello, world! ");
$str_len = strlen($str);
$str1_len = strlen($str1);
echo(" размер исходной строки '$str' = $str_len, <br>
размер строки после удаления пробелов = $str1_len");
?>
Размер исходной строки 'Hello, world!' = 19,
размер строки поле удаления пробелов = 13
Ltrim(), rtrim() и chop()
Функция ltrim() удаляет из строки начальные пробельные символы (т.е., те, которые слева); rtrim() – конечные пробельные символы. Функция chop() является синонимом функции rtrim().
Функции форматного вывода printf(), sprintf() и ввода sscanf()
· int printf ( string format [, mixed args] ) - ыыводит строку, отформатированную в соответствии с аргументом format, описанном в документации функции sprintf(), возвращает длину выведенной строки
· string sprintf ( string format [, mixed args] ) - возвращает строку, созданную с использованием строки формата format.
· mixed sscanf ( string str, string format [, mixed & ...] ) - разбирает строку в соответствии с заданным форматом
Функции printf и sprintf предназначены для форматного вывода и отличаются они тем, что функция printf() производит форматирование и выводит результаты в выходной поток (браузер или консоль), а sprintf() после осуществления требуемого форматирования просто возвращает строку.
Этими функциями можно пользоваться просто как функциями вывода (пример 4.7.5.1):
<?
printf("Hello!"); // выводит "Hello!"
sprintf("Hello!"); // сама по себе ничего не выводит,
$str = sprintf("Hello!"); // а просто возвращает строку,
printf($str); // которую затем можно вывести в выходной поток
?>
Строка формата состоит из директив: обычных символов (за исключением %), которые копируются в результирующую строку, и описатели преобразований, каждый из которых заменяется на один из параметров. Это относится также к fprintf(), sprintf() и printf().
Каждый описатель прреобразований состоит из знака процента (%), за которым следует один или более дополнительных элементов (в том порядке, в котором они здесь перечислены):
· Необязательный описатель заполнения, который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0. По умолчанию используется пробел. Альтернативный символ может быть указан с помощью '. См. примеры ниже.
· Необязательный описатель выравнивания, определяющий выранивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.
· Необязательное число, описатель ширины, определяющий минимальное число символов, которое будет содержать результат этого преобразования.
· Необязательный описатель точности, определяющий, сколько десятичных разрядов отображать для чисел с плавающей точкой. Имеет смысл только для числовых данных типа float.
· Описатель типа, определяющий, как трактовать тип данных аргумента. Допустимые типы:
- % - символ процента. Аргумент не используется.
- b - аргумент трактуется как целое и выводится в виде двоичного числа.
- c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
- d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
- e - аргумент трактуется как float и выводится в научной нотации (например 1.2e+2).
- u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
- f - аргумент трактуется как float и выводится в виде десятичного числа с плавающей точкой.
- o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
- s - аргумент трактуется как строка.
- x - аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в нижнем регистре букв).
- X - аргумент трактуется как целое и выводится в виде шестнадцатиричного числа (в верхнем регистре букв).
Начиная с PHP 4.0.6 в строке формата поддерживается нумерация и изменение порядка параметров.
Пример 4.7.5.1 (изменение порядка параметров):
<?
$format = "There are %d monkeys on the %s";
printf($format, $num, $location);
?>
Этот код выведет "There are 5 monkeys on the tree". Теперь представьте, что строка формата содержится в отдельном файле, который потом будет переведен на другой язык, и мы переписываем ее в таком виде:
Пример 4.7.5.2:
<?
$format = "The %s contains %d monkeys";
printf($format, $num, $location);
?>
Появляется проблема: порядок описателей преобразования не соответствует порядку аргументов. Мы не хотим менять код, и нам нужно указать, какому аргументу соответствует тот или иной описатель преобразования.
Пример 4.7.5.3:
<?
$format = "The %2\$s contains %1\$d monkeys";
printf($format, $num, $location);
?>
Нумерация аргументов имеет еще одно применение: она позволят вывести один и тот же аргумент несколько раз без передачи функции дополнительных параметров. Пример 4. Изменение порядка параметров
Пример 4.7.5.4:
<?
$format = "The %2\$s contains %1\$d monkeys.
That's a nice %2\$s full of %1\$d monkeys.";
printf($format, $num, $location);
?>
Функция sscanf() похожа на функцию printf(), но используется не для вывода, а для ввода данных. sscanf() интерпретирует строку str в соответствии с форматом format. Если переданы только эти два аргумента, будет возвращен массив. В противном случае, считанные из строки значения будкт присвоены переменным, переданным через дополнительные аргументы, и будет возвращено количество присвоенных значений. Дополнительные аргументы должны передаваться по ссылке.
Любые пробельные символы в строке формата соответствуют любым пробельным символам во входной строке. Это значит, что например символ табуляци \t в строке формата соответствует символу пробела во входной строке.
Пример 4.7.5.5:
<?
// получаем серийный номер
list($serial) = sscanf("SN/2350001", "SN/%d");
// и дату изготовления
$mandate = "Январь 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "Узел $serial был изготовлен: $year-" . substr($month, 0, 3) . "-$day\n";
?>
Если переданы необязательные аргументы, значения будут присвоены им, а возвращено будет количество присвоенных значений.
Пример 4.7.5.6:
<?
// получить имя автора и сформировать запись в формате DocBook
$auth = "24\tLewis Carroll";
$n = sscanf($auth, "%d\t%s %s", $id, $first, $last);
echo "<author id='$id'>
<firstname>$first</firstname>
<surname>$last</surname>
</author>\n";
?>
Функция преобразования кодировки convert_cyr_string()
string convert_cyr_string ( string str, string from, string to )
Эта функция преобразует строку str из одной кириллической кодировки в другую. Аргументы from и to задают входную и выходную кодировки соответственно, и состоят из одного символа. Поддерживаются следующие кодировки:
- k - koi8-r
- w - windows-1251
- i - iso8859-5
- a - x-cp866
- d - x-cp866
- m - x-mac-cyrillic
Функции работы с блоками текста
Wordwrap()
string wordwrap(string str [, int width [, string break [, int cut]]])
Функция wordwrap() разбивает исходный текст на строки с определенными завершающими символами. Согласно синтаксису, эта функция разбивает блок текста str на несколько строк, которые завершаеются символами break, так, чтобы в одной строке было не более width букв. Поскольку разбиение происходит по границам слов, текст остается вполне читаемым.
Пример (4.7.7.1.1):
<?
$str = "Вставай, страна огромная";
$mod_str = wordwrap($str,5,"\t");
echo($mod_str);
?>
Str_replace()
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )
Эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace. Если не нужны сложные правила поиска/замены, использование этой функции предпочтительнее ereg_replace() или preg_replace().
Пример 4.7.7.2.1:
$txt = str_replace("[B]","<B>",$txt);
Substr_replace()
string substr_replace ( string string, string replacement, int start [, int length] )
Заменяет часть строки string, начинающуюся с символа с порядковым номером start и длиной length, строкой replacement и возвращает результат.
Если start - положительное число, замена начинается с символа с порядковым номером start.
Если start - отрицательное число, замена начинается с символа с порядковым номером start, считая от конца строки.
Если аргумент length - положительное число, то он определяет длину заменяемой подстроки. Если этот аргумент отрицательный, он определяет количество символов от конца строки, на котором заканчивается замена. Этот аргумент необязателен и по умолчанию равен strlen(string );, т.е. замена до конца строки string.
Пример 7.7.3.1:
<?
$var = 'ABCDEFGH:/MNRPQR/';
echo "Оригинал: $var<hr />\n";
/* Обе следующих строки заменяют всю строку $var на 'bob'. */
echo substr_replace($var, 'bob', 0) . "<br />\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";
/* Вставляет 'bob' в начало $var. */
echo substr_replace($var, 'bob', 0, 0) . "<br />\n";
/* Обе следующих строки заменяют 'MNRPQR' in $var на 'bob'. */
echo substr_replace($var, 'bob', 10, -1) . "<br />\n";
echo substr_replace($var, 'bob', -7, -1) . "<br />\n";
/* Удаляет 'MNRPQR' из $var. */
echo substr_replace($var, '', 10, -1) . "<br />\n";
?>
Strtr()
string strtr ( string str, string from, string to )
string strtr ( string str, array replace_pairs )
Эта функция возвращает строку str, в которой каждое вхождение любого символа из перечисленных во from заменено на соответствующий символ из строки to.
Если длины строк from и to отличаются, "лишние" символы в более длинной строке не используются.
Пример 4.7.7.4.1:
<?
$addr = strtr($addr, "дец", "aao");
?>
strtr() может вызываться с двумя аргументами. В этом случае from должен быть массивом, индексы которого трактуются как строки поиска, а соответствующие значения - как строки замены. strtr() в первую очередь заменяет более длинные подстроки, причем одна и та же строка поиска используется только один раз.
Пример 4.7.7.4.2:
<?
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
Этот код выведет:
hello all, I said hi
Stripslashes()
string stripslashes ( string str )
Удаляет экранирующие бэкслэши. (\' преобразуется в ', и т.д.). Двойные бэкслэши (\\) преобразуется в одиночные(\).
stripslashes() используется, например, когда директива конфигурации magic_quotes_gpc включена (она включена по умолчанию), и экранирование символов не требуется. Например, данные не вставляются в базу данных, а просто выводятся в браузер.
Пример 4.7.7.5.1:
<?
$str = "Is your name O\'reilly?";
// выводит: Is your name O'reilly?
echo stripslashes($str);
?>
Addslashes()
string addslashes ( string str )
Возвращает сроку str, в которой перед каждым спецсимволом добавлен обратный слэш (\), например для последующего использования этой строки в запросе к базе данных. Экранируются одиночная кавычка ('), дойная кавычка ("), обратный слэш (\) и NUL (байт NULL).
Функция addslashes() часто применяется при записи в базу данных. Предположим, если нужно внести в базу данных имя O'reilly, то символ ' должен быть экранирован. В большинстве баз данных для этого используется \, строка будет выглядеть как O\'reilly. Заметьте, что сам символ \ в базу данных записан не будет. Если директива конфигурации magic_quotes_sybase имеет значение on, то символ ' будет экранироваться добавлением еще одного ' вместо \.
Директива конфигурации magic_quotes_gpc по умолчанию имеет значение on, при этом функция addslashes() автоматически применяется ко всем данным GET, POST, и COOKIE. Не используйте addslashes() для данных, обработанных magic_quotes_gpc, чтобы избежать двойного экранирования. Для проверки состояния этой директивы используется get_magic_quotes_gpc().
Пример 4.7.7.6.1:
<?
$str = "Is your name O'reilly?";
// выводит: Is your name O\'reilly?
echo addslashes($str);
?>
Stripcslashes()
string stripcslashes(string str)
Преобразует спецсимволы в их двоичное представление – возвращает строку, в которой закомментированные обратным слешем спецсимволы, (с целью визуального отображения), преобразуются в их двоичное представление. Функция распознает C-подобные записи (восьмеричные и шестнадцатеричные последовательности \n, \r и т.д.).
Addcslashes()
string addcslashes(string str, string charlist)
Функция добавление слешей перед специальными символами строки. Возвращает строку str, в которую вставлены символы обратного слеша перед перечисленными в списке charlist символами. Это позволяет преобразовывать символы, которые не печатаются в их визуальное С-представление.
Quotemeta()
string quotemeta(string str)
Функция цитирования метасимволов. Возвращает строку, в которую добавлены обратные слеши перед каждым из следующих символов: . \\ + * ? [ ^ ] ( $ ). Функцию можно использовать для подготовки шаблонов в регулярных выражениях.
Strrev()
string strrev(string str)
Производит реверс строки.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|