Учитывая строку и регулярное выражение, как я могу убедиться, что она соответствует всей строке? То есть я не хочу, чтобы символ новой строки запускал конец совпадения — я хочу, чтобы он совпадал с самым концом строки.
Пример:
<?php
// simplified date pattern
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/";
$d = "2014-01-05\n"; // OOPS - this will match
if(preg_match($pattern, $d)) {
echo "This is a date string.";
}
Использовать D
модификатор:
D (PCRE_DOLLAR_ENDONLY)
Если этот модификатор установлен, метасимвол доллара в шаблоне совпадает только в конце строки темы. Без этого модификатора доллар также совпадает непосредственно перед последним символом, если он является новой строкой (но не перед любыми другими символами новой строки).
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/D";
Вам нужно будет использовать модификатор многострочного шаблона m
как это:
$pattern = "/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/m"; // note m at end after pattern