Извините за мой английский.
$string = "product#[:id]#[:str]";
$regex = preg_replace("/\[:(\w+)\]/", "(?<$1>.+?)", $string);
То, что я получаю product#(?.+?)#(?.+?)
вместо product#(?<id>.+?)#(?<str>.+?)
Я хочу сделать это, потому что мне нужен preg_match () для создания имен ключейв $ match:
preg_match('/^'. $regex .'$/', str_replace("/", "#", self::$path), $matches)
Дело в том, что он работает без '<' и '>'.Но они мне нужны для следующего кода.Так что мне делать с этими символами <, '>?Я нуждаюсь в них, но не знаю, что делать.Я также пытался избежать их: \ <(но безрезультатно). </p>
Пожалуйста, помогите мне, если у вас есть какие-либо идеи.
Редактировать:
Похоже, то, что я сделал, былоХорошо.Теперь появилась новая проблема:
$string = "product#[i:id]#[*:str]";
$regex = preg_replace("/\[i:(\w+)\]/", "(?<$1>[0-9]+)", $regex);
$regex = preg_replace("/\[\*:(\w+)\]/", "(?<$1>.+?)", $regex);
Нет, я пробовал что-то еще, и это не работает.Зачем?(