preg_match(): 编译失败:无法识别的字符
preg_match(): Compilation failed: unrecognized character
对不起我的英语。
$string = "product#[:id]#[:str]";
$regex = preg_replace("/\[:(\w+)\]/", "(?<>.+?)", $string);
我得到的是product#(?.+?)#(?.+?)
而不是product#(?<id>.+?)#(?<str>.+?)
我想这样做是因为我需要 preg_match() 在 $matches:
中创建键名
preg_match('/^'. $regex .'$/', str_replace("/", "#", self::$path), $matches)
重点是,它可以在没有“<”和“>”的情况下工作。但是我需要它们来编写下一个代码。
那么我应该如何处理这些“<”、“>”字符呢?我需要它们,但不知道该怎么做。我也试图逃避他们:\<(但没有结果)。
有什么想法请帮帮我
编辑:
看来我做的还可以。
现在有新问题:
$string = "product#[i:id]#[*:str]";
$regex = preg_replace("/\[i:(\w+)\]/", "(?<>[0-9]+)", $regex);
$regex = preg_replace("/\[\*:(\w+)\]/", "(?<>.+?)", $regex);
不,我尝试了其他方法,但这不起作用。为什么? :(
如果要在浏览器中呈现您的 preg_replace
的结果,
而这个 rendered 结果应该包含 <
和 >
字符,
那么你应该将它们生成为 <
和 >
.
所以也许你的替换字符串(preg_replace
的第二个参数)应该是:
(?<>.+?)
对不起我的英语。
$string = "product#[:id]#[:str]";
$regex = preg_replace("/\[:(\w+)\]/", "(?<>.+?)", $string);
我得到的是product#(?.+?)#(?.+?)
而不是product#(?<id>.+?)#(?<str>.+?)
我想这样做是因为我需要 preg_match() 在 $matches:
中创建键名preg_match('/^'. $regex .'$/', str_replace("/", "#", self::$path), $matches)
重点是,它可以在没有“<”和“>”的情况下工作。但是我需要它们来编写下一个代码。 那么我应该如何处理这些“<”、“>”字符呢?我需要它们,但不知道该怎么做。我也试图逃避他们:\<(但没有结果)。
有什么想法请帮帮我
编辑:
看来我做的还可以。 现在有新问题:
$string = "product#[i:id]#[*:str]";
$regex = preg_replace("/\[i:(\w+)\]/", "(?<>[0-9]+)", $regex);
$regex = preg_replace("/\[\*:(\w+)\]/", "(?<>.+?)", $regex);
不,我尝试了其他方法,但这不起作用。为什么? :(
如果要在浏览器中呈现您的 preg_replace
的结果,
而这个 rendered 结果应该包含 <
和 >
字符,
那么你应该将它们生成为 <
和 >
.
所以也许你的替换字符串(preg_replace
的第二个参数)应该是:
(?<>.+?)