Вы должны проверить вход, чтобы идентифицировать разделитель, если таковой имеется, и удалить его.Таким образом, если пользователь следует правилам, вам не о чем беспокоиться, но если они этого не делают, разделитель все равно удаляется.Определить разделитель можно, сравнив первый и последний символ.
// with incorrect input.
$input = "/^a[bc]+d/"; // from $_POST['pattern']
$delim = "/";
if ($input[0] === $input[strlen($input) - 1]) {
$delim = $input[0];
}
$sInput = str_replace($delim,"",$input);
echo $sInput; // ^a[bc]+d
При правильном вводе вам не нужно беспокоиться.
$input = "^a[bc]+d"; // from $_POST['pattern']
$delim = "/";
if ($input[0] === $input[strlen($input) - 1]) {
$delim = $input[0];
}
$sInput = str_replace($delim,"",$input);
echo $sInput; // ^a[bc]+d
$sInput
- ваш очищенный шаблон,Вы можете использовать его непосредственно для проверки вашей строки.
$ matched = (preg_match ($ sInput, $ _POST ['string']) === 1);