<?php
// Т.к. мы подставляем переменную $column прямо в SQL код без обработки,
// то мы обязаны позаботиться о том, чтобы там не было SQL-иньекций
// Поэтому, мы должны крайне тщательно проверить, соответствует ли наше значение допутимым вариантам
// Проверяем, что там только 1, 2 или 3, а также проверяем, чтобы там не было вредоносного "продолжения"
$columnNumber = (int) $id[1];
if ($columnNumber < 1 || $columnNumber > 3 || strlen($id[1]) > 1) {
throw new \InvalidArgumentException("Неверный номер поля");
}
$column = 'count' . $columnNumber;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<select multiple>
<!-- Не правда ли прекрасно, что значение атрибута value работает без кавычек?-->
<option value=foo selected>FOO</option>
<!-- А вот так делают старые любители XHTML -->
<option value="bar" selected="selected">BAR</option>
<!-- А что если вот так? ... Да что же это такое происходит?! -->
<!-- Невалидно, но браузер прекрасно кушает, правда не так, как мы думали -->
<option value="baz" selected="true">BAZ</option>
<option value="fuc" selected=false>Ой...</option>
</select>
<!-- Все картинки работают -->
<img src="https://placehold.co/20" alt="aaa">
<img src="https://placehold.co/30" alt="aaa"/>
<!-- Валидатор сопротивляется, но браузеру плевать -->
<img src="https://placehold.co/40" alt="aaa"></img>
<!-- Идём дальше -->
<br /> Тег br закрыт. Само собой, текст находится не внутри br
Точно так же:
<br> Тег br закрыт. Само собой, текст находится не внутри br
И тут начинается что-то странное:
<div /> Тээк. Div же закрыт. А текст находится внутри Div. Шта?
Спецификация HTML чёткая и понятная. Ничего сильно запоминать не надо.
Любой новичок справится.
Так? ... Так?
<input />Этот текст снаружи элемента input
<input>Этот текст снаружи элемента input. Ошибка, но работает</input>
<div>Этот текст внутри div</div>
<div />Этот текст внутри div
<!-- Всё валидненько -->
<p>Этот текст внутри p</p>
<p>Этот текст внутри p
<p>Этот текст внутри p</p>
<!-- Невалидно, но работает в браузере -->
<p />Невалидно, текст внутри p
И много-много радостей вам парсинг регулярками принесёт...
</body>
</html>
<?php if (!empty($row['attr-size'])) : ?>
<li>Размер <?php echo $row['attr-size']; ?>мм</li>
<li>Назначение <?php echo $row['attr-coating']; ?></li>
<?php else :?>
<li>Назначение <?php echo $row['attr-coating']; ?></li>
<? endif;?>
Это и есть проблема, это и будет у вас всегда проблемой, если будете парсить HTML регулярками. Потому что это всё трудно анализировать и дебажить. Жаль, что будете учиться на своих ошибках, а не на чужих. Я когда-то, много лет назад тоже был такой парсильщик HTML регулярками, когда их изучил. Уйму времени потратил совершенно бестолково.
А насчёт того, что я вам посоветовал регулярку после обработки парсером, так это потому, что это как раз и место для регулярок: одна типовая строчка. Тут не запутаешься.