69702

Функції для роботи з окремими символами

Лекция

Информатика, кибернетика и программирование

При зміні регістра російських букв можуть виникнути проблеми, уникнути яких допоможе правильна установка локали. Локалью називатимемо сукупність локальних настройок системи, таких як формат дати і часу, мова, кодування.

Украинкский

2014-10-09

74 KB

0 чел.

Тема 22: Функції для роботи з окремими

символами

Як і в інших мовах програмування, в PHP ми можемо працювати з символами рядка окремо. Звернутися до будь-якого символу рядка можна по його індексу:

$str   =   "Book";

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

Якщо ви програмували на мові Pascal, вам повинні бути знайомі функції chr() і ord(). У PHP ці функції працюють майже так само, як і в Паскалі. Функція chr(int Scode) повертає рядок, що складається з символу з кодом $code, а функція ord(Schar) — код символу $char:

echo   chr(75); //   виведе.До

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

Досить цікавою є функція strrpos(string $str, char $chr). Хоча вона і схожа назвою на strpos(), але вона виконує абсолютно інші дії. Вона шукає останнє входження символу $chr у рядок $str. Якщо рядок $chr складається з більш за один символ, то буде використаний перший з них.

9.5. Зміна регістра символів. Установка і настройка локали

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

$str   =   strtolower($str); $str   =   strtoupper($str);

При зміні регістра російських букв можуть виникнути проблеми, уникнути яких допоможе правильна установка локали. Локалью називатимемо сукупність локальних настройок системи, таких як формат дати і часу, мова, кодування.

Настройки локали дуже залежать від операційної системи, тому якщо у вас удома все працює нормально, то це зовсім не означає, що так і буде на машині вашого хостинг-провайдера.

Для установки локали використовується функція SetLocale(), якою слід передати два параметри — категорію встановлюваних параметрів илокаль. Категорія може бути наступною:

LC_TYPE — використовується для установки локали перекладу символів
нижний/верхний регістри (якраз те, що нам потрібне).

LC_NUMERIC — використовується для установки локали для функції
форматування дробових чисел.

LC_TIME — допомагає набудувати форматоване виведення дати і
часу.

LC_ALL — встановлює всі вищеперелічені режими.

Ми не розглядатимемо всі категорії, а зупинимося на категорії LC_TYPE, яка зараз потрібна нам. Будь-яка локаль, встановлена в системі, має своє унікальне ім'я, по якому можна до неї звернутися. Категорія LC_TYPE встановлює локаль для перетворення символів. Ім'я активізованої локали для категорії LC_TYPE міститься в елементі з ключем LANG масиву GLOBALS (це змінна оточення LANG). У моєму випадку — це ru_RU.koi8. Для коректного перетворення символів на моїй машині потрібно виконати функцію:

SetLocale('LC_TYPE\'    ru_RU.koi8    ');

Якщо ви працюєте під Linux, в більшості випадків вас влаштує даний виклик (якщо, звичайно, ви використовуєте кодування koi8-r). В більшості випадків (у сучасних дистрибутивах), локаль вже настроєна до вас, тому перед її зміною за допомогою SetLocale(), слід спочатку переконатися, що параметри настроєні неправильно. На моїй машині із самого початку все було нормально, тому я не змінював локаль.

9.6. Перетворення символів

Функції видалення пропусків

У загальному випадку абсолютно неможливо передбачити, що може ввести в поле введення користувач. Іноді навіть сам користувач не може пояснити, чому він ввів це. Проте скрипт, якщо він створений добротно, повинен уміти розібратися в наданих йому даних. Або принаймні спробувати це зробити. Спеціально для цього в PHP передбачений цілий ряд функцій.

Після прийому параметрів, перш ніж приступити до їх обробки, потрібно перетворити значення параметрів до «товарного вигляду». Перш за все, потрібно видалити зайві пропуски. Функція trim() видаляє пробільні символи на початку і в кінці рядка, наприклад:

$s   =   "   string\n";

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

Нагадаю, що пробільними символами вважаються символи " ",\n,\r,\t. Окрім функції trim() можна використовувати функції ltrim() і chop(). Перша видаляє пробільні символи тільки на початку рядка, а друга -только в її кінці.

URL-кодування і декодування

Дуже корисними є функції Url-кодування і декодування даних. Так, функція UrlEncode() використовується для кодування даних. Кодування необхідне, якщо вам потрібно передати дані, содержаиче спеціальні символи або символи національних алфавітів, наприклад, символів російської або української мов. Url-кодування необхідне для передачі даних через інтернет, наприклад, таке кодування доцільне, якщо ви хочете передати російськомовну інформацію як параметр сценарію. Якщо ви хочете передати цілий файл, його також бажано закодувати за допомогою функції UrIEncode(), а потім розкодувати за допомогою UrlDecode(), щоб потім не вийшло непорозуміння. А вони можуть виникнути через банальну відсутність підтримки сервером 8-бітових кодувань.

Ось приклад автоматичного формування посилання <а href>:

$Param   =   "Російський   текст";

echo   "<a   href=http://locahost/

script.php?parametrs = ".UrlEncode($Param) .">Click   here</a>";

У лістингу 9.5 приведений приклад, що демонструє спільну роботу функцій UrIEncode() і UrlDecode:

Лістинг 9.5. Демонстрація спільної роботи функцій UrlEncode() і UrlDecode

<?

$Param = "Російський текст";

$Param = UrlEncode($Param);

echo "$Param\n";

$Param   =   UrlDecode($Param);

echo   "$Param\n";

?>

Рядок "Російський текст" (див. мал. 9.2) була перетворена в не зовсім зрозумілу послідовність символів, символ пропуску був замінений символом +. У такому вигляді рядок готовий до передачі по Усесвітній павутині. Функція UrlDecode() безболісно перетворила страшну после-

довательность символів в початковий рядок. Нагадаю, що кодування вимагають тільки параметри сценарію, якщо вони містять спеціальні символи або символи національних алфавітів.

Окрім функції UrIEncode() і UrlDecode() ви можете використовувати функції RawUrlEncode() і RawUrIDecode(). Ці функції працюють аналогічно попереднім, але не сприймають символ «+», як пропуск.




Мал. 9.2. Функції   UrlEncode() і UrlDecode

Використання слэшей

Ви знаєте, що для виведення лапок або похилої межі, потрібно використовувати цитування, тобто, запис цих символів через похилу межу:


$S   =    "\ echo   $S;

 \


Рано чи пізно, вам буде потрібно додати перед вказаними символами (або ж, навпаки, видалити) зайві слэши. Для додавання слэшей використовується функція AddSlashes(string $str), а для видалення — StripSlashes(string $str). Обидві функції повертають модифікований рядок і не змінюють результатну.

Заміна спеціальних символів на їх HTML-еквіваленти

Функція HtmlSpecialChars(string $str) замінює спеціальні символи (лапки, «більше», «менше» та інші) на їх HTML-еквіваленти. Робиться це для того, щоб вони на Web-сторінці виглядали самими собою.

Наприклад при використанні функції HtmlSpecialChars, знак «більше» в коді буде замінений рядком &gt, а лапки — &quot. Приклад використання HtmlSpecialChars приведений в лістингу 9.6.

Лістинг 9.6. Приклад використання HtmlSpecialChars

<?

$S   =   "&   <   >   \"";

$S =  HtmlSpecialChars($S);

echo $S;     // виведе &amp; slt; &gt; &quot;

?>


 

А также другие работы, которые могут Вас заинтересовать

42691. Showing appreciation. Taling about likes and dislikes. Describing products and giving opinions 177.5 KB
  Choose word or phrse in itlics to mke sentences tht re true in your country. However it is importnt to remember tht it is still business. If you re visiting people in nother country do some reserch to check on wht behviour is expected for exmple: Is it OK to discuss business during the mel Will your host hostess be offended if you refuse food or drink If you visit your host hostess t home should you tke gift It is good ide to order dish tht is not difficult to et. You cn concentrte on the people tht you re hving lunch with insted of...
42692. Talking about company history. Introducing a talk. Sequencing events. Presenting a company history 154 KB
  Tlking bout compny history. Introducing tlk Sequencing events Presenting compny history Introducing tlk Good business prctice. This lbortory work looks in prticulr t introducing tlk or presenttion. In n introduction it is importnt for the speker to: Introduce himself; Give cler overview of the subject; Tell the udience the structure tht the tlk will follow; Tell the udience whether they cn sk questions during the presenttion or whether there will be n opportunity to sk questions t the end of the tlk.
42693. Participating in meeting. Giving your opinion. Asking for opinions. Agreeing and disagreeing 128 KB
  Discussion You re prticipting in meeting where people hve lots of different opinions. Listen to wht people sy. Listen to wht people re sying Be discourged if people interrupt you. Four people give their opinion.
42694. Тестирование с целью определения характеристик компьютерной системы 146 KB
  4 dobe Bridge 1.0 dobe Common File Instller 1.0000 dobe Flsh Plyer 10 ctiveX 10.64 dobe Flsh Plyer 10 Plugin 10.
42695. Гидродинамика псевдосжиженого слоя 35 KB
  Гидродинамика псевдосжиженого слоя. Определение критической скорости газа Wкр скорости начала уноса слоя Gсл и расхода газа Vук при котором начинается унос твердых частиц из аппарата. Сопротивление кипящего слоя показывает дифманометр 10 который измеряет разность давлений внутри аппарата над кипящим слоем и под решёткой. После загрузки в аппарат измеряется высота слоя.
42696. Коммерческая работа по организации хозяйственных связей с поставщиками ювелирных изделий 779.5 KB
  Раскрыть сущность и содержание коммерческой работы по организации хозяйственных связей с поставщиками, их правовое регулирование; выявить факторы, влияющие на организацию хозяйственных связей с поставщиками; дать экономико-организационную характеристику ЗАО «ПроРАМПО»; провести анализ информационного обеспечения коммерческой деятельности и работы по определению потребности в товарах; охарактеризовать поставщиков ювелирных изделий;
42697. ОЗНАКОМЛЕНИЕ С ПАКЕТОМ АНАЛИЗА ЭЛЕКТРОННЫХ СХЕМ WORKBENCH 102.5 KB
  Необходимо: знать состав пакета его возможности а также используемые математические модели с помощью которых в нем описываются компоненты РЭА; уметь пользоваться меню и контекстной помощью; уметь самостоятельно набирать схемы в графическом редакторе пакета; знать и понимать принцип действия реальных измерительных приборов аналоги которых применяются в пакете; уметь объяснить отличие реальных приборов от их моделей; знать чем вызваны погрешности измерения и их теорию; уметь анализировать схемы с помощью средств пакета....
42698. Основные приемы программирования. Разветвления 78.5 KB
  h подключение библиотеки switch это оператор для выбора одного из многих продолжений cout счет вывод cse N выбор условия flot тип данных printf вывод scnf считывание defult: brek завершение условия switch= count= brek if else условие Текст программы решения задачи на языке высокого уровня С include stdfx.h int min { setlocleLC_LL RUS ;int lm = 0; для меню cout Выберите желаемое действие: endl; cout 1: Решить задачу: endl; cout 2: Выйти из приложения без решения задачи endl; cout Введите желаемое действие: ;...