Ответ
В PHP для обозначения конца строки в регулярных выражениях используется якорь $.
Базовое использование:
Якорь $ соответствует позиции перед символом перевода строки (n) или концу строки, если его нет.
// Проверяем, что строка заканчивается расширением .php
$filename = 'index.php';
if (preg_match('/.php$/', $filename)) {
echo 'Файл PHP';
}
// Проверяем, что строка состоит только из цифр от начала (^) до конца ($)
$input = '12345';
if (preg_match('/^d+$/', $input)) {
echo 'Строка содержит только цифры';
}
Многострочный режим (модификатор m):
С модификатором m якорь $ соответствует концу каждой строки в тексте, а не только концу всего текста.
$text = "Строка 1nСтрока 2nСтрока 3";
// Найдем все строки, заканчивающиеся на цифру
preg_match_all('/d$/m', $text, $matches); // Найдет '1', '2', '3'
Режим D (PCRE_DOLLAR_ENDONLY):
Если модификатор D установлен, $ соответствует только абсолютному концу строки, игнорируя символ n. Это полезно, когда нужно строгое совпадение с концом данных.
$text = "testn";
var_dump(preg_match('/test$/D', $text)); // 0 (не совпадает, потому что после 'test' идет n)
var_dump(preg_match('/test$/m', $text)); // 1 (совпадает, т.к. $ считает позицию перед n)
Учет завершающих пробелов:
Часто в пользовательском вводе бывают лишние пробелы. Чтобы их игнорировать при проверке конца строки, можно использовать s*$.
$userInput = 'my_value ';
if (preg_match('/^my_values*$/', $userInput)) {
echo 'Значение корректно (пробелы в конце не мешают)';
}