Иногда на собеседованиях я задаю такую задачку:
Дана строка текста. Нужно сделать заглавной первую букву каждого слова в тексте. На любые хитрые вопросы «а есть ли в строке знаки препинания» ответ — выбирайте самый простой случай для обработки.
Решить её можно множеством способов. Чем больше называет человек — тем лучше. К ним относятся:
Рассмотрим последний способ. Первым делом нужно превратить строку в массив. Для этого мы воспользуемся функцией explode()
, которая разделяет строку, используя указанный разделитель. В нашем случае разделителем является пробел.
<?php
function capitalizeWords($sentence)
{
$words = explode(' ', $sentence);
// ...
}
Теперь, используя цикл, легко выполнить операцию capitalize, то есть приведение первой буквы каждого слова к верхнему регистру.
<?php
function capitalizeWords($sentence)
{
$words = explode(' ', $sentence);
$capitalizedWords = [];
foreach ($words as $word) {
$capitalizedWords[] = ucfirst($word);
}
// ...
}
Последнее действие обратно первому. Нужно соединить слова и вернуть получившуюся строку наружу. Для соединения элементов массива в PHP используется функция implode()
. Она, как и explode()
, принимает на вход разделитель, который теперь используется для сборки строки.
<?php
function capitalizeWords($sentence)
{
$words = explode(' ', $sentence);
$capitalizedWords = [];
foreach ($words as $word) {
$capitalizedWords[] = ucfirst($word);
}
return implode(' ', $capitalizedWords);
}
$greeting = 'hello from Malasia';
print_r(capitalizeWords($greeting));
// => Hello From Malasia
https://repl.it/@hexlet/php-arrays-strings-capitalize-words
В случае, если строчку нужно разбить по символам, а не по словам, можно воспользоваться функцией mb_str_split():
<?php
$chars = mb_str_split($text);
foreach ($chars as $char) {
print_r($char);
}
mb_str_split()
принимает второй параметр, в котором можно указать количество символов в каждой группе (элементе получившегося массива). По умолчанию используется число 1, поэтому мы получаем массив, в котором каждый элемент — один символ. Но, если указать, например, 3, то в каждом элементе массива будет по три символа.
<?php
$text = 'Hello Friend';
$parts = mb_str_split($text, 3);
print_r($parts);
// => Array
// => (
// => [0] => Hel
// => [1] => lo
// => [2] => Fri
// => [3] => end
// => )
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт