Глава 28: корректура

This commit is contained in:
Igor Simdyanov
2022-07-30 12:06:22 +03:00
parent 8d821403b2
commit 7723e90741
5 changed files with 57 additions and 46 deletions

View File

@ -1,44 +1,45 @@
<?php
// Функция формирует двумерный массив, представляющий собой
// календарь на указанный месяц и год. Массив состоит из строк,
// соответствующих неделям. Каждая строка - массив из семи
// элементов, которые равны числам (или пустой строке, если
// данная клетка календаря пуста).
function makeCal(int $year, int $month) : array {
// Получаем номер дня недели для 1 числа месяца.
$wday = date('N');
// Начинаем с этого числа в месяце (если меньше нуля
// или больше длины месяца, тогда в календаре будет пропуск).
$n = - ($wday - 2);
$cal = [];
// Цикл по строкам.
for ($y = 0; $y < 6; $y++) {
// Будущая строка. Вначале пуста.
$row = [];
$notEmpty = false;
// Цикл внутри строки по дням недели.
for ($x = 0; $x < 7; $x++, $n++) {
// Текущее число > 0 и < длины месяца?
if (checkdate($month, $n, $year)) {
// Да. Заполняем клетку.
$row[] = $n;
$notEmpty = true;
} else {
// Нет. Клетка пуста.
$row[] = "";
}
}
// Если в данной строке нет ни одного непустого элемента,
// значит, месяц кончился.
if (!$notEmpty) break;
// Добавляем строку в массив.
$cal[] = $row;
}
return $cal;
// Функция формирует двумерный массив, представляющий собой
// календарь на указанный месяц и год. Массив состоит из строк,
// соответствующих неделям. Каждая строка - массив из семи
// элементов, которые равны числам (или пустой строке, если
// данная клетка календаря пуста).
function makeCal(int $year, int $month) : array
{
// Получаем номер дня недели для 1 числа месяца.
$wday = date('N');
// Начинаем с этого числа в месяце (если меньше нуля
// или больше длины месяца, тогда в календаре будет пропуск).
$n = - ($wday - 2);
$cal = [];
// Цикл по строкам.
for ($y = 0; $y < 6; $y++) {
// Будущая строка. Вначале пуста.
$row = [];
$notEmpty = false;
// Цикл внутри строки по дням недели.
for ($x = 0; $x < 7; $x++, $n++) {
// Текущее число > 0 и < длины месяца?
if (checkdate($month, $n, $year)) {
// Да. Заполняем клетку.
$row[] = $n;
$notEmpty = true;
} else {
// Нет. Клетка пуста.
$row[] = "";
}
}
// Если в данной строке нет ни одного непустого элемента,
// значит, месяц кончился.
if (!$notEmpty) break;
// Добавляем строку в массив.
$cal[] = $row;
}
return $cal;
}
$now = getdate();
$cal = makeCal($now['year'], $now['mon']);
$now = getdate();
$cal = makeCal($now['year'], $now['mon']);
?>
<!DOCTYPE html>
<html lang="ru">

View File

@ -1,7 +1,8 @@
<?php
// Вычисляет timestamp в Гринвиче, который соответствует
// локальному timestamp-формату
function local2utc($localStamp = false) {
function local2utc($localStamp = false)
{
if ($localStamp === false) $localStamp = time();
// Получаем смещение часовой зоны в секундах
@ -16,7 +17,8 @@ function local2utc($localStamp = false) {
// смещение локальной зоны относительно UTC (в часах),
// тогда будет осуществлен перевод в эту зону
// (а не в текущую локальную).
function utc2local($gmStamp = false, $tzOffset = false) {
function utc2local($gmStamp = false, $tzOffset = false)
{
if ($gmStamp === false) return time();
// Получаем смещение часовой зоны в секундах

View File

@ -1,8 +1,8 @@
<?php
$text = 'Привет от somebody@mail.ru, а также от other@mail.ru!';
$html = preg_replace(
'/(\S+)@([a-z0-9.]+)/is', // найти все E-mail
'<a href="mailto:$0">$0</a>', // заменить их по шаблону
$text // искать в $text
'/(\S+)@([a-z0-9.]+)/is', // найти все E-mail
'<a href="mailto:$0">$0</a>', // заменить их по шаблону
$text // искать в $text
);
echo $html;

View File

@ -1,9 +1,16 @@
<?php
$str = '<hTmL><bOdY style="background: white;">Hello, world!</bOdY></html>';
$str = <<<HTML
<hTmL>
<bOdY style="background: white;">
Hello, world!
</bOdY>
</html>
HTML;
$str = preg_replace_callback(
'{(?<btag></?)(?<content>\w+)(?<etag>.*?>)}s',
fn($m) => $m['btag'].strtoupper($m['content']).$m['etag'],
$str);
$str
);
echo htmlspecialchars($str);

View File

@ -10,6 +10,7 @@ $str = preg_replace_callback_array(
return "<strong>$m[1]</strong>";
}
],
$str);
$str
);
echo htmlspecialchars($str);