-
Notifications
You must be signed in to change notification settings - Fork 0
/
task_1.php
60 lines (44 loc) · 6.08 KB
/
task_1.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/* 1. PHP и HTML. Напишите код на PHP
В переменной $a лежит текст новости. В переменной $link лежит ссылка на страницу с полным текстом этой новости.
Нужно в переменную $b записать сокращенный текст новости по правилам:
- обрезать до 180 символов
- приписать многоточие
- последние 2 слова и многоточие сделать ссылкой на полный текст новости.
Какие проблемы вы видите в решении этой задачи? Что может пойти не так?
Результат: ссылка на репозиторий с кодом и ваши комментарии. */
$a = 'Равным образом сложившаяся структура организации требуют определения и уточнения новых предложений. Не следует, однако забывать, что сложившаяся структура организации требуют определения и уточнения форм развития.
Таким образом консультация с широким активом требуют определения и уточнения системы обучения кадров, соответствует насущным потребностям. Разнообразный и богатый опыт сложившаяся структура организации позволяет выполнять важные задания по разработке соответствующий условий активизации. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности обеспечивает широкому кругу (специалистов) участие в формировании дальнейших направлений развития. Равным образом новая модель организационной деятельности требуют определения и уточнения направлений прогрессивного развития. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке направлений прогрессивного развития. Идейные соображения высшего порядка, а также реализация намеченных плановых заданий в значительной степени обуславливает создание дальнейших направлений развития.
Разнообразный и богатый опыт реализация намеченных плановых заданий представляет собой интересный эксперимент проверки дальнейших направлений развития. Равным образом начало повседневной работы по формированию позиции влечет за собой процесс внедрения и модернизации системы обучения кадров, соответствует насущным потребностям.';
$link = '/news.html';
/* Получим часть строки, равную 180 символам, применив функцию "mb_substr".
Затем при помощи функции "trim" удалим пробелы с начала и конца возвращенной подстроки, после чего разобьём её
по пробелу на массив строк с применением функции "explode".
Полученный массив строк (слов) присваиваем переменной $arrWords */
$arrWords = explode(' ', (trim(mb_substr($a, 0, 180)) . '...'));
/* Далее, применив функцию "array_pop" два раза получаем сначала последнее, затем - предпоследнее слово */
$lastWordForLink = array_pop($arrWords);
$penultWordForLink = array_pop($arrWords);
/* В переменную $b записываем строку, которая будет содержать:
- подстроку, полученную с применением функции "implode" из массива $arrWords;
- подстроку, содержащую последние два слова, обёрнутые в HTML-разметку с ссылкой на страницу с полным текстом новости. */
$b = implode(' ', $arrWords) . ' ' . '<a href="' . $link . '" style="text-decoration: none;">'
. $penultWordForLink . ' ' . $lastWordForLink . '</a>';
/* Возможные проблемы */
/* На мой взгляд, при решении подобной задачи можно столкнуться с двумя проблемами:
1) если для получения подстроки заданной длины применять функцию "substr", то при работе с многобайтовыми кодировками
можно получить подстроку некорректной длины;
2) на 180-й позиции подстроки может оказаться символ пробела, и тогда, если не применить функцию "trim", последнее слово
будет отделено от многоточия пробелом. То же касается и знаков препинания. */
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Task 1</title>
</head>
<body>
<?php echo $b; ?>
</body>
</html>