Примеры решения задач

Задача

Задача. Дана строка 'minsk'. Сделайте из нее строку 'MINSK'.

Решение: воспользуемся функцией strtoupper и сразу получим результат:

<?php
	echo strtoupper('minsk');
?>

Задача

Задача. Дана строка 'минск'. Сделайте из нее строку 'МИНСК'.

Решение: функцией strtoupper мы не можем воспользоваться, так как она некорректно работает с русскими буквами. Воспользуемся функцией mb_strtoupper и сразу получим результат:

<?php
	echo mb_strtoupper('минск');
?>

Задача

Задача. Дана строка 'MINSK'. Сделайте из нее строку 'Minsk'.

Решение: готовой функции для решения задачи в PHP не существует. Поэтому сначала воспользуемся функцией strtolower (в результате получится 'minsk'), а затем функцией ucfirst:

<?php
	echo ucfirst(strtolower('minsk'));
?>

Задача

Задача. В переменной $date лежит дата в формате '31-12-2030'. Преобразуйте эту дату в формат '2030.12.31'.

Решение: для начала разобьем строку '31-12-2030' в массив с помощью функции explode:

<?php
	//Разбиваем строку в массив по разделителю '-':
	$arr = explode('-', '31-12-2030');
?>

В полученном массиве в $arr[0] будет лежать 31 (то есть день), в $arr[1] - месяц, а в $arr[2] - год. Сольем элементы этого массива в новую строку:

<?php
	//Разбиваем строку в массив по разделителю '-':
	$arr = explode('-', '31-12-2030');

	//Получим дату в нужном формате:
	echo $arr[2].'.'.$arr[1].'.'.$arr[0];
?>

Задачи для решения

Работа с регистром символов

Для решения задач данного блока вам понадобятся следующие функции: strtolower, strtoupper, ucfirst, lcfirst, ucwords.

Дана строка 'php'. Сделайте из нее строку 'PHP'.

Решение:

<?php
	echo strtoupper('php');
?>

Дана строка 'PHP'. Сделайте из нее строку 'php'.

Решение:

<?php
	echo strtolower('PHP');
?>

Дана строка 'london'. Сделайте из нее строку 'London'.

Решение:

<?php
	echo ucfirst('london');
?>

Дана строка 'London'. Сделайте из нее строку 'london'.

Решение:

<?php
	echo lcfirst('London');
?>

Дана строка 'london is the capital of great britain'. Сделайте из нее строку 'London Is The Capital Of Great Britain'.

Решение:

<?php
	echo ucworlds('london is the capital of great britain');
?>

Дана строка 'LONDON'. Сделайте из нее строку 'London'.

Решение:

<?php
	echo ucfirst(strtolower('LONDON');
?>

Работа с strlen

Для решения задач данного блока вам понадобятся следующие функции: strlen.

Дана строка 'html css php'. Найдите количество символов в этой строке.

Решение:

<?php
	echo strlen('html css php');
?>

Дана переменная $password, в которой хранится пароль пользователя. Если количество символов пароля больше 5-ти и меньше 10-ти, то выведите пользователю сообщение о том, что пароль подходит, иначе сообщение о том, что нужно придумать другой пароль.

Решение:

<?php
	$password = '123456789';
	$len = strlen($password);
	
	if ($len > 5 and $len < 10) {
		echo 'Пароль подходит';
	} else {
		echo 'Пароль не подходит, придумайте другой';
	}
?>

Работа с substr

Для решения задач данного блока вам понадобятся следующие функции: substr.

Дана строка 'html css php'. Вырежьте из нее и выведите на экран слово 'html', слово 'css' и слово 'php'.

Решение:

<?php
	echo substr('html css php', 0, 4); //html
	echo substr('html css php', 5, 3); //css
	echo substr('html css php', 9, 3); //php
?>

Дана строка. Вырежите и выведите на экран последние 3 символа этой строки.

Решение:

<?php
	echo substr('123456789', -3); //789
?>

Дана строка. Проверьте, что она начинается на 'http://'. Если это так, выведите 'да', если не так - 'нет'.

Решение:

<?php
	$str = 'http://phphtml.net';
	if (substr($str, 0, 7) == 'http://') {
		echo 'Да';
	} else {
		echo 'Нет';
	}
?>

Дана строка. Проверьте, что она начинается на 'http://' или на 'https://'. Если это так, выведите 'да', если не так - 'нет'.

Решение:

<?php
	$str = 'http://phphtml.net';
	$check1 = substr($str, 0, 7);
	$check2 = substr($str, 0, 8);
	if ($check1 == 'http://' or $check2 == 'https://') {
		echo 'Да';
	} else {
		echo 'Нет';
	}
?>

Дана строка. Проверьте, что она заканчивается на '.png'. Если это так, выведите 'да', если не так - 'нет'.

Решение:

<?php
	$str = '1.png';
	$check = substr($str, -4);
	if ($check == '.png') {
		echo 'Да';
	} else {
		echo 'Нет';
	}
?>

Дана строка. Проверьте, что она заканчивается на '.png' или на '.jpg'. Если это так, выведите 'да', если не так - 'нет'.

Решение:

<?php
	$str = '1.png';
	$check = substr($str, -4);
	if ($check == '.png' or $check == '.jpg') {
		echo 'Да';
	} else {
		echo 'Нет';
	}
?>

Дана строка. Если в этой строке более 5-ти символов - вырежите из нее первые 5 символов, добавьте троеточие в конец и выведите на экран. Если же в этой строке 5 и менее символов - просто выведите эту строку на экран.

Решение:

<?php
	$str = '123456789';
	if(strlen($str) > 5) {
		echo substr($str, 0, 5). '...';
	} else {
		echo $str;
	}
?>

Работа с str_replace

Для решения задач данного блока вам понадобятся следующие функции: str_replace.

Дана строка '31.12.2013'. Замените все точки на дефисы.

Решение:

<?php
	echo str_replace('.', '-', '31.12.2013');
?>

Дана строка $str. Замените в ней все буквы 'a' на цифру 1, буквы 'b' - на 2, а буквы 'c' - на 3.

Решение:

<?php
	echo str_replace(['a', 'b', 'c'], [1, 2, 3], 'abcabc'); //выведет '123123'
?>

Дана строка с буквами и цифрами, например, '1a2b3c4b5d6e7f8g9h0'. Удалите из нее все цифры. То есть в нашем случае должна получится строка 'abcbdefgh'.

Решение:

<?php
	echo str_replace([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], '', '1a2b3c4b5d6e7f8g9h0');
?>

Работа с strtr

Для решения задач данного блока вам понадобятся следующие функции: strtr.

Дана строка $str. Замените в ней все буквы 'a' на цифру 1, буквы 'b' - на 2, а буквы 'c' - на 3. Решите задачу двумя способами работы с функцией strtr (массив замен и две строки замен).

Решение:

Первый способ:

<?php
	$str = 'abcabc';
	echo strtr($str, ['a'=>1, 'b'=>'2', 'c'=>'3']); //выведет '123123'
?>

Второй способ:

<?php
	$str = 'abcabc';
	echo strtr($str, 'abc', '123'); //выведет '123123'
?>

Работа с substr_replace

Для решения задач данного блока вам понадобятся следующие функции: substr_replace.

Дана строка $str. Вырежите из нее подстроку с 3-го символа (отсчет с нуля), 5 штук и вместо нее вставьте '!!!'.

Решение:

<?php
	$str = '1234567890';
	echo substr_replace($str, '!!!', 3, 5); //выведет '123!!!90'
?>

Работа с strpos, strrpos

Для решения задач данного блока вам понадобятся следующие функции: strpos, strrpos.

Дана строка 'abc abc abc'. Определите позицию первой буквы 'b'.

Решение:

<?php
	echo strpos('abc abc abc', 'b'); //выведет 1
?>

Дана строка 'abc abc abc'. Определите позицию последней буквы 'b'.

Решение:

<?php
	echo strrpos('abc abc abc', 'b'); //выведет 9
?>

Дана строка 'abc abc abc'. Определите позицию первой найденной буквы 'b', если начать поиск не с начала строки, а с позиции 3.

Решение:

<?php
	echo strpos('abc abc abc', 'b', 3); //выведет 5
?>

Дана строка 'aaa aaa aaa aaa aaa'. Определите позицию второго пробела.

Решение:

<?php
	$str = 'aaa aaa aaa aaa aaa';
	$first = strpos($str, ' '); //позиция первого пробела
	echo strpos($str, ' ', $first + 1);
?>

Проверьте, что в строке есть две точки подряд. Если это так - выведите 'есть', если не так - 'нет'.

Решение:

<?php
	$str = 'aaa..aaaa';
	if(strpos($str, '..') !== false) {
		echo 'Да';
	} else {
		echo 'Нет';
	}
?>

Проверьте, что строка начинается на 'http://'. Если это так - выведите 'да', если не так - 'нет'.

Решение:

<?php
	$str = 'http://phphtml.net';
	
	//Проверяем, что строка начинается с http://:
	if(strpos($str, 'http://') === 0) {
		echo 'Да';
	} else {
		echo 'Нет';
	}
?>

Работа с explode, implode

Для решения задач данного блока вам понадобятся следующие функции: explode, implode.

Дана строка 'html css php'. С помощью функции explode запишите каждое слово этой строки в отдельный элемент массива.

Решение:

<?php
	$arr = explode(' ', 'html css php');
	var_dump($arr);
?>

Дан массив с элементами 'html', 'css', 'php'. С помощью функции implode создайте строку из этих элементов, разделенных запятыми.

Решение:

<?php
	$arr = ['html', 'css', 'php'];
	echo implode(',', $arr);
?>

В переменной $date лежит дата в формате '2013-12-31'. Преобразуйте эту дату в формат '31.12.2013'.

Решение:

<?php
	$date = '2013-12-31';
	$arr = explode('-', $date);
	echo $arr[2].'.'.$arr[1].'.'.$arr[0];
?>

Работа с str_split

Для решения задач данного блока вам понадобятся следующие функции: str_split.

Дана строка '1234567890'. Разбейте ее на массив с элементами '12', '34', '56', '78', '90'.

Решение:

<?php
	var_dump(str_split('1234567890', 2));
?>               

Дана строка '1234567890'. Разбейте ее на массив с элементами '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'.

Решение:

<?php
	var_dump(str_split('1234567890', 1));
?>               

Дана строка '1234567890'. Сделайте из нее строку '12-34-56-78-90' не используя цикл.

Решение:

<?php
	echo implode('-', str_split('1234567890', 2));
?>               

Работа с trim, ltrim, rtrim

Для решения задач данного блока вам понадобятся следующие функции: trim, ltrim, rtrim.

Дана строка. Очистите ее от концевых пробелов.

Решение:

<?php
	$str = ' строка ';
	echo trim($str);
?>

Дана строка '/php/'. Сделайте из нее строку 'php', удалив концевые слеши.

Решение:

<?php
	$str = '/php/';
	echo trim($str, '/');
?>

Дана строка 'слова слова слова.'. В конце этой строки может быть точка, а может и не быть. Сделайте так, чтобы в конце этой строки гарантировано стояла точка. То есть: если этой точки нет - ее надо добавить, а если есть - ничего не делать. Задачу решите через rtrim без всяких ифов.

Решение:

<?php
	$str = 'слова слова слова.';
	echo rtrim($str, '.').'.';
?>

Работа с strrev

Для решения задач данного блока вам понадобятся следующие функции: strrev.

Дана строка '12345'. Сделайте из нее строку '54321'.

Решение:

<?php
	$str = '12345';
	echo strrev($str);
?>               

Проверьте, является ли слово палиндромом (одинаково читается во всех направлениях, примеры таких слов: madam, otto, kayak, nun, level).

Решение:

<?php
	$str = 'madam';
	$rev = strrev($str);
	if ($rev == $str) {
		echo $str. ' - это слово палиндром';
	}
?>               

Работа с str_shuffle

Для решения задач данного блока вам понадобятся следующие функции: str_shuffle.

Дана строка. Перемешайте символы этой строки в случайном порядке.

Решение:

<?php
	$str = 'Hello World!';
	echo str_shuffle($str);
?>               

Создайте строку из 6-ти случайных маленьких латинских букв так, чтобы буквы не повторялись. Нужно сделать так, чтобы в нашей строке могла быть любая латинская буква, а не ограниченный набор.

Решение:

<?php
	$str = 'qwertyuiopasdfghjklzxcvbnm'; //все латинские буквы
	$newStr = str_shuffle($str); //перемешиваем их
	echo substr($newStr, 0, 6); //берем первые 6 символов
?>               

Работа с number_format

Для решения задач данного блока вам понадобятся следующие функции: number_format.

Дана строка '12345678'. Сделайте из нее строку '12 345 678'.

Решение:

<?php
	$str = '12345678';
	echo number_format($str, 0, ' ', ' ');
?>               

Работа с str_repeat

Для решения задач данного блока вам понадобятся следующие функции: str_repeat.

Нарисуйте пирамиду, как показано на рисунке, только у вашей пирамиды должно быть 9 рядов, а не 5. Решите задачу с помощью одного цикла и функции str_repeat.

x
xx
xxx
xxxx
xxxxx

Решение:

<?php
	for ($i = 1; $i <= 9; $i++) {
		echo str_repeat('x' , $i).'<br>';
	}
?>               

Нарисуйте пирамиду, как показано на рисунке. Решите задачу с помощью одного цикла и функции str_repeat.

1
22
333
4444
55555
666666
7777777
88888888
999999999

Решение:

<?php
	for ($i = 1; $i <= 9; $i++) {
		echo str_repeat($i , $i).'<br>';
	}
?>               

Работа с strip_tags и htmlspecialchars

Для решения задач данного блока вам понадобятся следующие функции: htmlspecialchars, strip_tags.

Дана строка 'html, <b>php</b>, js'. Удалите теги из этой строки.

Решение:

<?php
	echo strip_tags('html, <b>php</b>, js');
?>

Дана строка $str. Удалите все теги из этой строки, кроме тегов <b> и <i>.

Решение:

<?php
	echo strip_tags($str, '<b><i>');
?>

Дана строка 'html, <b>php</b>, js'. Выведите ее на экран 'как есть': то есть браузер не должен преобразовать <b> в жирный.

Решение:

<?php
	echo htmlspecialchars('html, <b>php</b>, js');
?>

Работа с chr и ord

Для решения задач данного блока вам понадобятся следующие функции: chr, ord.

Узнайте код символов 'a', 'b', 'c', пробела.

Решение:

<?php
	echo ord('a');
	echo ord('b');
	echo ord('c');
	echo ord(' ');
?>               

Изучите таблицу ASCII. Определите границы, в которых располагаются буквы английского алфавита.

Выведите на экран символ с кодом 33.

Решение:

<?php
	echo chr(33);
?>               

Запишите в переменную $str случайный символ - большую букву латинского алфавита. Подсказка: с помощью таблицы ASCII определите какие целые числа соответствуют большим буквам латинского алфавита.

Решение:

<?php
	$str = chr(rand(65, 90));
	echo $str;
?>               

Запишите в переменную $str случайную строку $len длиной, состоящую из маленьких букв латинского алфавита. Подсказка: воспользуйтесь циклом for или while.

Решение:

<?php
	$str = '';
	$len = 5;
	for ($i = 1; $i <= $len; $i++) {
		$str .= chr(rand(65, 90));
	}
	echo $str;
?>               

Дана буква английского алфавита. Узнайте, она маленькая или большая.

Решение:

<?php
	$str = 'А';
	$code = ord($str);
	if ($code >= 65 and $code <= 90) {
		echo 'большая буква';
	}
	if ($code >= 97 and $code <= 122) {
		echo 'маленькая буква';
	}
?>               

Работа с strchr, strrchr

Для решения задач данного блока вам понадобятся следующие функции: strchr, strrchr.

Дана строка 'ab-cd-ef'. С помощью функции strchr выведите на экран строку '-cd-ef'.

Решение:

<?php
	$str = 'ab-cd-ef';
	echo strchr($str, '-');
?>               

Дана строка 'ab-cd-ef'. С помощью функции strrchr выведите на экран строку '-ef'.

Решение:

<?php
	$str = 'ab-cd-ef';
	echo strrchr($str, '-');
?>               

Работа с strstr

Для решения задач данного блока вам понадобятся следующие функции: strstr.

Дана строка 'ab--cd--ef'. С помощью функции strstr выведите на экран строку '--cd--ef'.

Решение:

<?php
	$str = 'ab--cd--ef';
	echo strstr($str, '--');
?>               

Задачи

Преобразуйте строку 'var_test_text' в 'varTestText'. Скрипт, конечно же, должен работать с любыми аналогичными строками.

Решение:

<?php
	$arr = explode('_', 'var_test_text');
	$str = '';
	foreach ($arr as $key=>$elem) {
		if($key != 0) {
			$str .=  ucfirst($elem);
		} else {
			$str .= $elem;
		}
	}
	echo $str;
?>               

Дана строка следующего вида: 5 цифр, затем пробел, затем еще 5 цифр. Например, дана такая строка '12345 67890'. Сделайте из нее строку '54321 09876'.

Решение:

<?php
	$str = '12345 67890';
	$arr = explode(' ', $str);
	$arr[0] = strrev($arr[0]);
	$arr[1] = strrev($arr[1]);
	echo implode(' ', $arr);
?>               

Дан массив с числами. Выведите на экран все числа, в которых есть цифра 3.

Решение:

<?php
	$arr = [3, 11, 13, 31, 28, 34];
	foreach ($arr as $elem) {
		if (strpos($elem, '3') !== false) {
			echo $elem . '<br>';
		}
	}
?>               

Дан массив с числами. Посчитайте суммарное количество цифр 3 в этих числах.

Решение:

<?php
	$arr = [3, 11, 13, 31, 28, 34];
	$i = 0;
	foreach ($arr as $elem) {
		if (strpos($elem, '3') !== false) {
			$i++;
		}
	}
	echo $i;
?>