Операции над строками.

Строки в PHP.

Свойства строки в PHP:

Конкатенация строк.

Для конкатенации (присоединения строк) используется оператор "." (точка). Пример конкатенации строк:

<?

$a = "20";

$b = "10";

$c = $a.$b;  //число + число

echo "$c\n";  //выведет 2010

$d = "Hello";

$c = $a.$d; // число + строка

echo  "$c\n";  //выведет 20Hello

?>

Сравнение строк.

В PHP операнды сравниваются как строки, только в том случае, если они - строки. В противном случае они сравниваются, как числа. При этом любая строка, которую интерпретатору не удается перевести в число, будет восприниматься, как 0.

Лучше всего для сравнения использовать = = = (тройной оператор равенства - оператор эквивалентности). Он всегда позволяет производить корректное сравнение, т.к. он сравнивает величины и по значению, и по типу.

Базовые функции работы со строками.

Функция strlen() возвращает длину строки, то есть количество символов, которое содержит строка.

$a = "Hello";

echo strlen ($a);  //выведет5

Функция strpos() ищет подстроку в строке. Функции нужно передать три параметра:

Если строка не найдена, функция возвращает false, в противном случае - номер позиции, с которой начинается вхождение подстроки в строку:

echo strpos("Hello", "el");  // выведет 1

Функция substr (string $str, int $from, int $lenght) возвращает заданный участок строки, то есть подстроку. Возвращается подстрока строки $str, начиная с позиции $from длины $length. Если параметр $from будет отрицательным, то отсчет подстроки будет производиться с конца строки, а не с начала. Параметр $length является необязательным.

$str = "Book";

echo substr ($str, 1, 1);  // выведет o

echo substr ($str, -1, 1);  // выведет k

Функция strcmp ($str1, $str2) сравнивает две строки и возвращает следующие значения:

0, если строки равны;

1, если строка $str1 лексикографически больше $str2;

-1, если строка $str1 "меньше" $str2.

Функция strasecmp (sstring $str1, string $str2)  сравнивает две строки без учета регистра символов, то есть, строки BOOK, BOOK и book для этой функции равны.

Замена в строке.

Функция str_replace ($str1, $str2, $source) заменяет в строке $source (которая в процессе работы функции не изменяется) все вхождения подстроки $str1 на подстроку $str2 и возвращает результат в виде новой строки.

Пример замены символов новой строки \n на тэг <br>:

$str = str_replace ("\n", "<br>", $str);

Функция WordWrap() оказывается очень полезной, когда нужно отформатировать текст письма перед его отправкой. Данная функция разбивает текст письма на строки, завершая каждую символом разрыва строки(по умолчанию \n). В каждой строке должно быть не более 75 символов (но можно указать и другое их количество). Например:

<?

$s = "Очень длинный блок текста, который нужно разбить на части перед отправкой адресату";

echo $s."\n\n";

// разбиваем по 15 символов

$s = WordWrap ($s, 15, "\n");

echo $s;

?>

Функция strip_tags(). Данная функция удаляет из строки все HTML - тэги:

$s = strip_tags($s);

Список тэгов, которые не стоит удалять, можно указать их при вызове функции:

$s = strip_tags ($s, "<a><head>");

Функции для работы с отдельными символами.

Обратиться к любому символу строки можно по его индексу:

$str = "Book";

echo $str[0];  // выведет В

Функция chr (int $code) возвращает строку, состоящую из символа с кодом $code, а функция ord ($char) - код символа $char:

echo chr (75); // выведет K

echo ord ('A');  //выведет 65 - код буквы A

Изменение регистра символов.

Установка и настройка локали.

Для перевода символов в нижний регистр используется функция strtolower(), а в верхний - strtoupper():

$str = strtolower ($str);

$str = strtoupper ($str);

При изменении регистра русских букв могут возникнуть проблемы, избежать которых поможет правильная настройка локали. Локалью называется совокупность настроек системы, таких как формат даты и времени, язык, кодировка. Для установки локали используется функция SetLocale(), которой следует передать два параметра - категорию устанавливаемых параметров и локаль. Категория может быть следующей:

Любая локаль, установленная в системе, имеет свое уникальное имя, по которому можно к ней обратиться. Категория LC_TYPE устанавливает локаль для преобразования символов. Имя активизированной локали для катагории LC_TYPE содержится в элементе с ключом LAND массива GLOBALS (эта переменная окружения LAND). В некоторых случаях - это ru_RU.koi8. Для корректного преобразования символов нужно выполнить функцию:

SetLocal ('LC_TYPE',  'ru_RU.koi8');

Преобразование символов.

Функции удаления пробелов.

После приема параметров (например при заполнении формы), прежде чем приступить к их обработке, нужно преобразовать значения параметров (удалить лишние пробелы). Пробельными символами являются символы " ", \n, \r, \t.

Функция trim() удаляет пробельные символы в начале и в конце строки, например:

$s = "string\n";

$s = trim ($s);  // $s = "string"

Кроме функции trim() можно использовать функции ltrim() и chop(). Первая удаляет пробельные символы только в начале строки, вторая - только в конце.

URL - кодирование и декодирование.

Функция UrlEncode() используется для кодирования данных. Кодирование необходимо для передачи данных через Интернет, содержащих специальные символы национальных алфавитов, например русского языка. При передаче целого файла его необходимо закодировать с помощью функции UrlEncode().

Пример автоматического формирования ссылки < a href>:

$Param = "Русский текст";

echo "<a href=http://localhost/script.php?parametrs=".UrlEncode($Param). ">Click here</a>";

В следующем листинге приведен пример, демонстрирующий совместную работу функций UrlEncode() и UrlDecode():

<?

$Param = "Русский текст";

$Param = UrlEncode ($Param);

echo "$Param\n";

$Param = UrlDecode ($Param);

echo "$Param\n";

?>

Использование слэшей.

Для вывода кавычек и наклонной черты необходимо использовать цитирование, то есть, запись этих символов через наклонную черту:

$s = "\\ \"'";

echo $s;

Для добавления слэшей используется функция AddSlashes (string $str), а для удаления - StripSlashes (atring $str).

Обе функции возвращают модифицированную строку и не изменяют исходную.

Замена специальных символов на их HTML - эквиваленты.

Функция HtmlSpecialChars (string $str) заменяет специальные символы (кавычки, "больше", "меньше" и другие) на их HTML - эквиваленты, для того, чтобы на Web - странице они выглядели сами собой. Например при использовании функции HtmlSpecialChars, знак "больше" в коде будет заменен строкой &gt, а кавычки - &quot. Пример использования функции HtmlSpecialChars:

<?

$s = "& < > \" ";

$s = HtmlSpecialChars ($s);

echo $s;  // выведет &amp; &lt; &gt; &quot;

?>

Преобразование кодировок.

В PHP применяется функция convert_cyr_string(), преобразующая русский текст из одной кодировки в другую. Данной функции необходимо передать три параметра:

Последние два параметра могут принимать следующие значения:

k - KOI8-R;

w -windows-1251;

d или a - x-cp866;

m - x-mac-cyrillic;

i - iso8859-5.

Пример использования функции convert_cyr_string():

<?

// Преобразование слова "Привет" из кодировки koi8-r в windows-1251

echo convert_cyr_string ("Привет", "k", "w");  //  выведет "оПХБЕР"

?>

Специальные функции.

Хэш - функции md5() и crc32().

Функция md5() кодирует строку, используя алгоритм MD5 (Message Digest Algorithm). Вероятность того, что две разные строки будут иметь одинаковый хэш - код, стремится к нулю, а это позволяет эффективно использовать данную функцию для шифрования паролей. Зашифрованное с его помощью сообщение невозможно расшифровать - для алгоритма MD5 не существует алгоритма дешифровки. Для проверки подлинности пароля нужно зашифровать пароль заново и сравнить зашифрованные строки: если они равны, значит пароль правильный. Например:

<?

$a = "my_password";

$b = "my_password";

$c = "password";

if (md5 ($a) === md5 ($b)) echo "1: пароль правильный";

if (md5 ($a) === md5 ($c)) echo "2: пароль правильный";

?>

Сценарий выведет только первое сообщение, поскольку строки (значит, и их хэш - коды) равны. Рекомендация по использованию этой функции:

Кроме функции md5() можно использовать функцию crypt(), которая реализует алгоритм DES, но данный алгоритм менее эффективен, поэтому для серьезных проектов не применяется.

Функция crc32 () используется для вычисления 32 - битной контрольной суммы строки. Данная функция пригодна для регистрации программного продукта через Internet, является стандартной, и менее рекомендуема для серьезных проектов.

Hosted by uCoz