![](/img/trans.png)
[英]Warning: preg_match(): Compilation failed: unrecognized character after (? or (?-
[英]preg_match(): Compilation failed: unrecognized character
對不起我的英語不好。
$string = "product#[:id]#[:str]";
$regex = preg_replace("/\[:(\w+)\]/", "(?<$1>.+?)", $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+)\]/", "(?<$1>[0-9]+)", $regex);
$regex = preg_replace("/\[\*:(\w+)\]/", "(?<$1>.+?)", $regex);
不,我嘗試了其他方法,但這不起作用。 為什么? :(
如果要在瀏覽器中呈現preg_replace
的結果,並且僅此呈現結果應包含<
和>
字符,則應將其生成為<
和>
。
因此,也許您的替換字符串( preg_replace
第二個參數)應該是:
(?<$1>.+?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.