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;

?>


 

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

33703. Особенности расследования убийств при обнаружении частей расчлененного трупа 12.37 KB
  Особенности расследования убийств при обнаружении частей расчлененного трупа. При обнаружении частей расчлененного трупа перед следователем стоит задача найти все части тела убитого установить его личность и выявить убийцу. Иногда части расчлененного трупа отправляются багажом по железной дороге в различные пункты. При обнаружении нескольких или всех частей расчлененного трупа путем судебномедицинской экспертизы требуется установить: 1 являются ли обнаруженные части трупа частями тела человека; 2 принадлежат ли они одному трупу; 3 пол...
33704. Особенности расследования убийств, замаскированных под самоубийство 12.06 KB
  Особенности расследования убийств замаскированных под самоубийство Неотложными следственными действиями в делах связанных с инсценировкой самоубийства являются осмотр места происшествия и трупа допрос заявителя и лиц близко знавших погибшего освидетельствование подозреваемого обыск и выемка а также проведение судебномедицинской экспертизы в тех случаях когда судебномедицинское исследование трупа не проводилось до возбуждения уголовного дела. Допрос заявителя и лиц хорошо знавших погибшего производится по широкому кругу вопросов...
33705. Особенности расследования убийств при возбуждении дел по факту обнаружения трупа неизвестного с признаками насильственной смерти 12.26 KB
  Особенности расследования убийств при возбуждении дел по факту обнаружения трупа неизвестного с признаками насильственной смерти. При обнаружении трупа неизвестного лица с признаками насильственной смерти будут приняты меры к установлению личности погибшего. При обнаружении трупа неизвестного лица он прежде всего будет предъявлен для опознания тем кто оказался на месте происшествия в момент его осмотра. Если лицо убитого обезображено перед предъявлением для опознания будет произведён туалет трупа.
33706. Поведение с лицами находящимися в бессознательном состоянии 10.87 KB
  100 Устава патрульнопостовой службы милиции общественной безопасности. 18 комментируемого Закона оказание помощи в том числе первой доврачебной гражданам пострадавшим от преступлений административных правонарушений и несчастных случаев а также находящимся в беспомощном или ином состоянии опасном для их жизни опасность для здоровья в данном случае законодателем исключена является одной из служебных обязанностей сотрудника милиции которые ему предписано выполнять независимо от занимаемой должности места нахождения и времени....
33707. Особенности расследования причинения телесных повреждений на бытовой почве 13.34 KB
  Дела об умышленном причинении легкого вреда здоровью возбуждаются только по жалобе потерпевшего которому разъясняется что дело может быть прекращено за примирением сторон. Признаки дающие основание возбудить дело помимо заявления потерпевшего могут усматриваться из представленных им медицинских история болезни справка врача других уличающих виновного документов в том числе магнитофонных записей телефонных переговоров осуществлявшихся потерпевшим по своей инициативе. Расследование начинается как правило с допроса потерпевшего если...
33708. Особенности расследования изнасилования в ситуации, когда насильник незнаком с жертвой 17.16 KB
  по объекту преступления кто подвергся изнасилованию не находилось ли потерпевшая в беспомощном состоянии не обладает ли потерпевшая признаками наличие которых является отягчающим обстоятельством несовершеннолетие потерпевшей. При этом устанавливается является ли объектом преступления половая свобода потерпевшей или ее здоровье достоинство а также общественное отношениеличная собственность потерпевшей. По объективной стороне где и когда совершено изнасилование или покушение на него каким способом какое насилие было применено в...
33709. КРИМИНАЛИСТИЧЕСКАЯ ХАРАКТЕРИСТИКА ПРИСВОЕНИЙ И РАСТРАТ 23.1 KB
  В качестве свидетелей по делам о присвоении допрашиваются: 1 заявители обратившиеся в правоохранительные органы с сообщением об известном им факте хищения; 2 исполнители и очевидцы производственных и техниковспомогательных операций связанных с механизмом присвоения; 3 бухгалтерские и банковские работники проводившие соответствующие финансовые операции; 4 участники подготовки заключения и технического обеспечения сделок прикрывавших противоправные действия расхитителей; 5 работники контролирующих инстанций аудиторских организаций...
33710. Расследование дел о присвоении или растрате 16.68 KB
  Методами предварительной проверки служат: изучение нормативов регламентирующих деятельность организации анализ особенностей ее деятельности и связанных с нею организаций; ревизия; внезапная инвентаризация; истребование документов отражающих сомнительные операции с материальными ценностями или денежными средствами; объяснения должностных и материально ответственных лиц причастных к сомнительным операциям и контролю за ними; поручения органам дознания провести оперативные мероприятия. Изымаются все имеющиеся у них документы в том числе...
33711. ОСОБЕННОСТИ РАССЛЕДОВАНИЯ ВЗЯТОЧНИЧЕСТВА 12.3 KB
  Примерными действиями следователя в этом случае являются: а допрос взяткодателя; б задержание взяткополучателя с поличным перед этим если есть такая возможность проводят осмотр предполагаемого предмета взятки а после задержания – личный обыск взяткополучателя иногда – его освидетельствование; в допрос взяткополучателя; г обыски по местам жительства и работы взяткополучателя наложение ареста на его имущество; д выемка и осмотр документов; е допросы свидетелей;...