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