Перетворення перших літер на великі (верхній регістр) - PHP. Функції зміни регістру Php функція перетворення рядка у верхній регістр

В PHP змінніі константні імена чутливі до регістру, імена функцій – немає.

Наскільки мені відомо, PHP – це єдина мова, якою це відбувається. Всі інші мови, які я використав, або повністю чутливі до регістру, або нечутливі до регістру.

Чому PHP частковоставиться до senstive?

Зверніть увагу, що я не питаю, якіімена чутливі до регістру, але чому .

З урахуванням регістру

  • змінні
  • константи
  • клавіші масиву
  • властивості класу
  • константи класу

Нечутливість до регістру(як визначено користувачем, так і PHP)

  • функції
  • конструктори класів
  • методи класу
  • ключові словаі конструкції (if, else, null, foreach, echo тощо)

основи

Змінні в PHP представлені знаком долара, за яким слідує ім'я змінної. Ім'я змінної чутливе до регістру.

Імена змінних слідують тим самим правилам, що й інші мітки в PHP. Правильне ім'я змінної починається з літери або підкреслення, за якою слідує будь-яка кількість літер, цифр або символів підкреслення. В якості регулярного вираженнявоно виражається так: "*"

  1. Посібник користувача для користувачів
  2. Чому функції та методи PHP нечутливі до регістру?
  3. Чи є функції PHP чутливими до регістру?
  4. Чи є ключові слова PHP чутливими до регістру?
  5. Чи є імена функцій PHPчутливими до регістру чи ні?
  6. Джерело чутливості до PHP

Делікатний випадок

змінні, константи, ключі масиву, властивості класу, константи класу

Без урахування регістру

функції, конструктори класів, методи класу, ключові слова та конструкції (if, else, null, foreach, echo і т. д.),

Для імен файлів:

Зверніть увагу, що чутливість до регістру також залежить від вашого середовища.

Коли ви розробляєте щось на своєму WAMP або XAMPP, це буде нечутливим до регістру, коли ви перейдете на сервер Linuxвін викликатиме помилку.

Чому PHP частково відноситься до senstive?

Я можу тільки припустити, що це пов'язано з ранніми версіями, можливо, з PHP / FI 2.0. У посібнику явно зазначено:

Майте на увазі, що імена функцій PHP/FI не чутливі до регістру.

Більшість даних користувача, таких як параметри GETта POST, завжди були зареєстровані як глобальні змінні. Розгляд цих питань як нечутливих до регістру, ймовірно, викликав проблеми, і, імовірно, тому всі змінні розглядалися як чутливі до регістру.

З того, що я можу сказати, це були єдині типи ідентифікаторів у PHP/FI 2.0. Решта були представлені пізніше, певне, імітуючи імена функцій, які не враховують регістр.

Константи, які є особливими, були введені лише з PHP 4 (керівництво PHP 3 згадує «константи», але вони називаються «літералами»). З якоїсь загадкової причини (можливо, консенсусу не вдалося знайти) було прийнято рішення дозволити постійним ідентифікаторам define() d або чутливим до регістру, або нечутливим до відхилення розробників. Цікаво відзначити, що в той час як define() за замовчуванням використовує чутливі до регістру константи, відповідні C-копії (REGISTER_*_CONSTANT) за умовчанням нечутливі до регістру.

Здійснює перетворення символів рядка на нижній регістр.

Синтаксис:

String strtolower(string str);

Перетворює рядок на нижній регістр. Повертає результат переказу.

Слід зазначити, що при неправильному налаштуванні локалі функція видаватиме дивні результати при роботі з літерами кирилиці.

$str = "HeLLo World"; $str = strtolower($str); echo $str; // виведе hello world

strtoupper

Здійснює перетворення заданого рядка на верхній регістр.

Синтаксис:

String strtoupper(string str);

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

$str = "Hello World"; $str = strtoupper($str); echo $str; // виведе HELLO WORLD

ucfirst

Перетворює перший символ рядка у верхній регістр.

Синтаксис:

String ucfirst(string str);

Повертає рядок, у якого перший заголовний символ.

$str = "hello world"; $str = ucfirst($str); echo $str; // виведе Hello world

ucwords

Перетворює перший символ кожного слова рядка у верхній регістр.

Синтаксис:

String ucwords(string str);

Повертає рядок, який має перший символ кожного слова в рядку заголовний.

Під словом тут розуміється ділянка рядка, якому передує пробільний символ: пробіл, перехід на новий рядок, прогін сторінки, повернення каретки, горизонтальна та вертикальна табуляція.

Символи кирилиці можуть бути неправильно конвертовані.

$str = "hello world"; $str = ucfirst($str); echo $str; // виведе Hello World

PHP хороший різноманіттям нативних функцій мови. Проте, у деяких випадках доводиться дописувати функціонал, що бракує. Особливо це помітно при роботі з функціями перетворення рядків та різними кодуваннями.

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

З символами англ. алфавіту проблем не виникає:

"; //перетворює у верхній регістр перший символ кожного слова в рядку echo ucwords($str); ?>

Test string Test String

Але з кирилицею виникають проблеми:

"; //перетворює у верхній регістр перший символ кожного слова в рядку echo ucwords($str); ?>

Тестовий рядок тестовий рядок

Для PHP типові випадки, коли функції "погано" або взагалі не працюють із кирилицею. Деякі функції з приставкою mb вирішують проблеми з кирилицею. Наприклад, mb_strtolower – приведення рядка до нижнього регістру. На відміну від strtolower(), що символ є буквою визначається на підставі властивостей символу Юнікоду.

Для вирішення проблеми визначимо функцію mb_ucfirst(string str [, string encoding]), яка оброблятиме символи Юнікоду.

Для перетворення у верхній регістр першого символу кожного слова в рядку достатньо використовувати mb_convert_case в режимі MB_CASE_TITLE.

11 років тому

Зверніть увагу, що mb_strtolower() is very SLOW, якщо ви маєте connection database, ви повинні бути використані, щоб переконатися, що ваші strings в короткий час. Even latin1/9 (iso-8859-1/15) і інші написи є можливо.

Have a look at my simple benchmark:

$text = «Lorem ipßüm Dolor SSIT Амет, cönßectetüer ädipißcing Еліт. Sed язичка. Präeßent jüßtö tellüß, grävidä Eu, tempüß ä, mättiß NON, Орсі. Nam qüiß Lorem. Nam äliqüet Еліт ßed Еліт. Phäßellüß venenätiß jüßtö Eget enim. Донець Нісль. Pröin mättiß venenätiß jüßtö Сивий äliqüäm PortA ORCI Crass Еліт Нісль, cönvälliß qüiß, tincidünt А.Т., vehicülä äccümßän, Одіо Сивий möleßtie Etiam mölliß feügiät Еліт Veßtibülüm Anté ipßüm primiß в fäücibüß ORCI lüctüß і ін ültriceß pößüere cübiliä Cüräe; ..... Mäecenäß NON Nulla ».;

// mb_strtolower()
$ timeMB = microtime (true);

For($i = 0 ; $i< 30000 ; $i ++)
$lower = mb_strtolower ("$text /no-cache-$i");

$timeMB = microtime (true) - $timeMB;

// MySQL lower()
$timeSQL = microtime (true);

Mysql_query ("set names latin1");
for($i = 0; $i< 30000 ; $i ++) {
$r = mysql_fetch_row (mysql_query ("select lower("$text /no-cache-$i")"));
$ lower = $ r [0];
}

$timeSQL = microtime (true) - $timeSQL;

echo "mb:". sprintf ("%.5f", $timeMB). sek.
" ;
echo "sql:". sprintf ("%.5f", $timeSQL). sek.
" ;

// Result on my notebook:
// mb: 11.50642 sek.
// sql: 5.44143 sek.

?>

7 років тому

Зверніть увагу, що якщо ви використовуєте UTF-8 mb_strtolower буде тільки конвертувати загальні умови, які мають велику мету, які ви знайдете з Unicode property "Upper case letter" ("Lu"). However, є також у літерах таких як "Letter numbers" (Unicode property "Nl"), що також мають велику кількість і вище варіантів. The characters will not be converted be mb_strtolower!

Example:
The Roman letters Ⅰ, Ⅱ, Ⅲ, ..., Ⅿ (UTF-8 code points 8544 через 8559) also exist in their respective lower case variants ⅰ, ⅱ, ⅲ, ..., ⅿ (UTF-8 code points через 8575) і повинен, в мій погляд, також бути схвалений mb_strtolower, але вони не є!

Великі інтернет-компанії (як Google) до матчу як варіанти як semantically ecual (since the representations only differ in case).

Since I не було finding any property solution in the internet on how to map all UTF8-strings to their lowercase counterpart in PHP, I offer the following hard-coded extended mb_strtolower function for UTF-8 strings:

Функція загоряє функцію mb_strtolower() і додаткові заміни uppercase UTF8-characters for which there is a lowercase representation. Безсумнівно, це не єдиний Unicode uppercase and lowercase character-table in the internet that I was able to find, I checked the first million UTF8-characters against the Google-search and -KeywordTool and identified the following 78 characters as uppercase- being replaced by mb_strtolower, but having a UTF8 lowercase counterpart.

//Numbers in the-line-comments display the characters" Unicode code-points (CP).
function strtolower_utf8_extended ($utf8_string )
{
$additional_replacements = array
("Dž" => "dž" // 453 -> 454
, "Lj" => "lj" // 456 -> 457
, "Nj" => "nj" // 459 -> 460
, "Dz" => "dz" // 498 -> 499
, "Ϸ" => "ϸ" // 1015 -> 1016
, "?" => "?" // 1017 -> 1010
, "Ϻ" => "ϻ" // 1018 -> 1019
, "ᾈ" => "ᾀ" // 8072 -> 8064
, "ᾉ" => "ᾁ" // 8073 -> 8065
, "ᾊ" => "ᾂ" // 8074 -> 8066
, "ᾋ" => "ᾃ" // 8075 -> 8067
, "ᾌ" => "ᾄ" // 8076 -> 8068
, "ᾍ" => "ᾅ" // 8077 -> 8069
, "ᾎ" => "ᾆ" // 8078 -> 8070
, "ᾏ" => "ᾇ" // 8079 -> 8071
, "ᾘ" => "ᾐ" // 8088 -> 8080
, "ᾙ" => "ᾑ" // 8089 -> 8081
, "ᾚ" => "ᾒ" // 8090 -> 8082
, "ᾛ" => "ᾓ" // 8091 -> 8083
, "ᾜ" => "ᾔ" // 8092 -> 8084
, "ᾝ" => "ᾕ" // 8093 -> 8085
, "ᾞ" => "ᾖ" // 8094 -> 8086
, "ᾟ" => "ᾗ" // 8095 -> 8087
, "ᾨ" => "ᾠ" // 8104 -> 8096
, "ᾩ" => "ᾡ" // 8105 -> 8097
, "ᾪ" => "ᾢ" // 8106 -> 8098
, "ᾫ" => "ᾣ" // 8107 -> 8099
, "ᾬ" => "ᾤ" // 8108 -> 8100
, "ᾭ" => "ᾥ" // 8109 -> 8101
, "ᾮ" => "ᾦ" // 8110 -> 8102
, "ᾯ" => "ᾧ" // 8111 -> 8103
, "ᾼ" => "ᾳ" // 8124 -> 8115
, "ῌ" => "ῃ" // 8140 -> 8131
, "ῼ" => "ῳ" // 8188 -> 8179
, "Ⅰ" => "ⅰ" // 8544 -> 8560
, "Ⅱ" => "ⅱ" // 8545 -> 8561
, "Ⅲ" => "ⅲ" // 8546 -> 8562
, "Ⅳ" => "ⅳ" // 8547 -> 8563
, "Ⅴ" => "ⅴ" // 8548 -> 8564
, "Ⅵ" => "ⅵ" // 8549 -> 8565
, "Ⅶ" => "ⅶ" // 8550 -> 8566
, "Ⅷ" => "ⅷ" // 8551 -> 8567
, "Ⅸ" => "ⅸ" // 8552 -> 8568
, "Ⅹ" => "ⅹ" // 8553 -> 8569
, "Ⅺ" => "ⅺ" // 8554 -> 8570
, "Ⅻ" => "ⅻ" // 8555 -> 8571
, "Ⅼ" => "ⅼ" // 8556 -> 8572
, "Ⅽ" => "ⅽ" // 8557 -> 8573
, "Ⅾ" => "ⅾ" // 8558 -> 8574
, "Ⅿ" => "ⅿ" // 8559 -> 8575
, "Ⓐ" => "ⓐ" // 9398 -> 9424
, "Ⓑ" => "ⓑ" // 9399 -> 9425
, "Ⓒ" => "ⓒ" // 9400 -> 9426
, "Ⓓ" => "ⓓ" // 9401 -> 9427
, "Ⓔ" => "ⓔ" // 9402 -> 9428
, "Ⓕ" => "ⓕ" // 9403 -> 9429
, "Ⓖ" => "ⓖ" // 9404 -> 9430
, "Ⓗ" => "ⓗ" // 9405 -> 9431
, "Ⓘ" => "ⓘ" // 9406 -> 9432
, "Ⓙ" => "ⓙ" // 9407 -> 9433
, "Ⓚ" => "ⓚ" // 9408 -> 9434
, "Ⓛ" => "ⓛ" // 9409 -> 9435
, "Ⓜ" => "ⓜ" // 9410 -> 9436
, "Ⓝ" => "ⓝ" // 9411 -> 9437
, "Ⓞ" => "ⓞ" // 9412 -> 9438
, "Ⓟ" => "ⓟ" // 9413 -> 9439
, "Ⓠ" => "ⓠ" // 9414 -> 9440
, "Ⓡ" => "ⓡ" // 9415 -> 9441
, "Ⓢ" => "ⓢ" // 9416 -> 9442
, "Ⓣ" => "ⓣ" // 9417 -> 9443
, "Ⓤ" => "ⓤ" // 9418 -> 9444
, "Ⓥ" => "ⓥ" // 9419 -> 9445
, "Ⓦ" => "ⓦ" // 9420 -> 9446
, "Ⓧ" => "ⓧ" // 9421 -> 9447
, "Ⓨ" => "ⓨ" // 9422 -> 9448
, "Ⓩ" => "ⓩ" // 9423 -> 9449
, "𐐦" => "𐑎" // 66598 -> 66638
, "𐐧" => "𐑏" // 66599 -> 66639
);

$utf8_string = mb_strtolower ($utf8_string, "UTF-8");

$utf8_string = strtr ($utf8_string, $additional_replacements);

Return $utf8_string;
) //strtolower_utf8_extended()

Функції зміни регістру

strtolower

Здійснює перетворення символів рядка на нижній регістр.

Синтаксис:

string strtolower(string str);

Перетворює рядок на нижній регістр. Повертає результат переказу.

Слід зазначити, що при неправильному налаштуванні локалі функція видаватиме дивні результати при роботі з літерами кирилиці.

$str = "HeLLo World";

$str = strtolower($str);

// виведе hello world

strtoupper

Здійснює перетворення заданого рядка у верхній регістр.

Синтаксис:

string strtoupper(string str);

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

$str = "Hello World";

$str = strtoupper($str);

// виведе HELLO WORLD

Перетворює перший символ рядка у верхній регістр.

Синтаксис:

string ucfirst(string str);

Повертає рядок, у якого перший заголовний символ.

$str = "hello world";

$str = ucfirst($str);

// виведе Hello world

Перетворює перший символ кожного слова рядка у верхній регістр.

Синтаксис:

string ucwords(string str);

Повертає рядок, який має перший символ кожного слова в рядку заголовний.

Під словом тут розуміється ділянка рядка, якому передує пробільний символ: пробіл, перехід на новий рядок, прогін сторінки, повернення каретки, горизонтальна та вертикальна табуляція.

Символи кирилиці можуть бути неправильно конвертовані.

$str = "hello world";

$str = ucfirst($str);

// виведе Hello World

З книги Енциклопедія розробника модулів ядра Linux автора Померанц Орі

З книги Людський фактор у програмуванні автора Костянтин Ларрі Л

54 Агенти зміни Одна риба, зробивши правильний рух у потрібний момент, може змінити курс всього косяка. У групі, що розробляє програмне забезпечення, успішність введення нового інструменту або покращеного методу керування версіями часто залежить від

З книги Ефективне використання STL автора Мейєрс Скотт

Порада 35. Реалізуйте прості порівняння рядків без урахування регістру символів з використанням mismatch або lexicographical_compare. Простота цього питання оманлива. Порівняння

З книги Основи об'єктно-орієнтованого програмування автора Мейєр Бертран

Якщо вам коли-небудь доводилося писати програми, в яких використовуються рядки (а кому, питається, не доводилося?), швидше за все, ви зустрічалися з типовою ситуацією - два рядки, що відрізняються тільки регістром

З книги TCP/IP Архітектура, протоколи, реалізація (включаючи IP версії 6 та IP Security) автора Фейт Сідні М

З книги Технологія XSLT автора Валиков Олексій Миколайович

Зміни та сталість Розробка ПЗ, як уже згадувалося, багато в чому пов'язана з повторюваністю. Для розуміння технічної проблеми повторного використання, слід зрозуміти природу повторюваності. Незважаючи на те, що програмісти зазвичай час від часу повторюють одні та

З книги Розробка програм у середовищі Linux. Друге видання автора Джонсон Майкл До.

11.8.2 Переміщення та зміни Що станеться, якщо користувач перемістить комп'ютер в інше місце, підключивши його до іншої мережі чи підмережі? Під час завантаження комп'ютер, що використовує DHCP, автоматично змінить свою IP-адресу та маску підмережі, а також при необхідності -

З книги C++. Збірник рецептів автора Дігінс Крістофер

22.10.3 Зміни в DNS Новий тип запису про ресурс, AAAA, відображає імена доменів в адреси IP версії 6. . Щоб перетворити адреси на імена IPv6, потрібно додати нові домени. Зворотній пошук

З книги Linux та UNIX: програмування у shell. Посібник розробника. автора Тейнслі Девід

З книги Офісний комп'ютер для жінок автора Пастернак Євгенія

Зміни в XPath 2.0 Версія мови XPath, що розробляється, внаслідок інтеграції з XQuery, очевидно, зазнає серйозних змін. Нова специфікація вже зараз розбита на два документи: документ, що описує модель даних та документ, що описує функції та оператори. Тому на

З книги HTML, XHTML та CSS на 100% автора Квінт Ігор

11.7.2. Зміни в коді Як тільки в parseCommand() будуть правильно відображені структури даних, то запуск команд у правильному порядку стає досить простим за достатньої уваги до деталей. Перш за все, ми додаємо цикл parseCommand() для запуску дочірніх процесів,

З книги автора

4.13. Виконання порівняння рядків без урахування регістру Проблема Є два рядки і потрібно дізнатися, чи вони не рівні, не враховуючи регістр їх символів. Наприклад, "cat" не дорівнює "dog", але "Cat" повинна дорівнювати "cat", "CAT" або "caT".РішенняПорівняйте рядки, використовуючи стандартний

З книги автора

4.14. Виконання пошуку рядків без урахування регістру ПроблемаПотрібно знайти в рядку підрядок, не враховуючи різницю в регістрі.РішенняВикористовуйте стандартні алгоритми transform і search, визначені в , а також власні функції порівняння символів, аналогічні

З книги автора

8.1.8. Ігнорування регістру символів За замовчуванням команда grep чутлива до зміни регістру символів. Щоб здійснити пошук без урахування регістру, скористайтесь опцією -i. У файлі data.f позначення місяця Sept зустрічається як у верхньому, і у нижньому регістрі. Тому для

З книги автора

Зміни Якщо змін у документі багато, зручно користуватися цією групою кнопок. Наприклад, ви бачите виправлення і ви з ним згодні. Ставте в нього курсор і натискаєте кнопку Прийняти. Виділення виправлення зникає, і воно органічно вписується у ваш текст.

З книги автора

Призначення імен тегів та атрибутів залежить від регістру У документах HTML імена тегів та атрибутів не залежать від регістру символів, отже, наприклад, запис

,
або
означає той самий тег таблиці. Однак у XHTML це різні теги. Те саме стосується імен

2022 wisemotors.ru. Як це працює. Залізо. Майнінг. Криптовалюта.