Попытка поиска перемотки вперед в Preg_Match

Я искал часы, пытаясь найти решение этого. Я пытаюсь определить, является ли REQUEST URI законным и сломать его оттуда.

$samplerequesturi = "/variable/12345678910";

Чтобы определить, является ли это законным, первая variable раздела является только буквой и является переменной по длине. Второй раздел – это цифры, которые должны иметь 11 баллов. Моя проблема заключается в том, чтобы избежать косой черты, чтобы она соответствовала uri. Я пробовал:

 preg_match("/^[\/]{1}[az][\/]{1}[0-9]{11}+$/", $samplerequesturi) preg_match("/^[\\/]{1}[az][\\/]{1}[0-9]{11}+$/", $samplerequesturi) preg_match("/^#/#{1}[az]#/#{1}[0-9]{11}+$/", $samplerequesturi) preg_match("/^|/|{1}[az]|/|{1}[0-9]{11}+$/", $samplerequesturi) 

Среди других, которые я не могу вспомнить сейчас.

Обычно запрос отклоняется:

 preg_match(): Unknown modifier '|' preg_match(): Unknown modifier '#' preg_match(): Unknown modifier '[' 

Edit: Я думаю, я должен сказать, что URI REQUEST уже известен. Я пытаюсь доказать всю строку, чтобы убедиться, что это не фиктивная строка, то есть убедиться, что 1-й набор – это только строчные буквы, а 2-й набор – всего 11 чисел.

/ это не единственное, что вы можете использовать в качестве разделителя. Фактически, вы можете использовать почти любой не-slphanumeric символ. Лично мне нравится использовать () потому что это напоминает мне, что первым элементом массива результатов является полное совпадение, и ему также не требуется экранирование в шаблоне.

 preg_match("(^/([az]+)/(\d+)$)i",$samplerequesturi,$out); var_dump($out); 

Это должно сделать это.

Ваша проблема может заключаться в том, что вы используете / forward-slash как разделитель регулярных выражений (в начале и в конце выражения регулярного выражения). Переключитесь на использование символа, отличного от прямого косой черты, например символа # хеша или любого другого символа, который никогда не будет отображаться в этом конкретном выражении. Тогда вам не нужно будет вообще избегать символа прямой косой черты в выражении.

Если вы хотите использовать регулярное выражение (которое я не считаю необходимым в этом случае, просто разделение на «/» должно быть в порядке:

 $samplerequesturi = "/variable/12345678910"; preg_match("@^/([A-Za-z]+)/(\d+)$@", $samplerequesturi, $out); echo $out[1]; echo $out[2]; 

должен вас поймать