[英]Not understanding a regular expression in php preg_replace
一個非常基本的問題,在下面的正則表達式中我不了解Pipe的用途:
$menu=preg_replace("|<li><a href=\"".$base."\">(.*)</a></li>|U", "<li class=\"current\">$1</li>", $menu);
當然,我知道它們的意思是多個(OR)匹配,我不確定為什么在這樣的位置使用the,就像在regexp開頭一樣。
如果您能提供幫助,我會很高興,我敢肯定這是個白痴問題!
豎線是定界符,將正則表達式與修飾符分開(通常,您會看到/作為定界符,但它可以是任何單個字符) http://php.net/manual/en/regexp.reference.delimiters.php
http://php.net/manual/en/reference.pcre.pattern.modifiers.php在此處查找U修飾符,即PCRE_UNGREEDY
字母U是用於修改模式匹配行為的修飾符。
i-忽略大小寫,不區分大小寫
U-使搜索不滿意
s-包括換行
m-多行
x-擴展用於注釋和空格
e-允許評估替換為PHP代碼。 (僅限preg_replace)
S-模式的額外分析
更多信息請訪問:
http://www.phpro.org/tutorials/Introduction-to-PHP-Regex.html
正如Kris解釋的那樣,管道用作定界符,U修飾符用於在貪婪和惰性之間切換量詞的行為。
請注意,最好這樣寫這行:
$menu = preg_replace('~<li><a href="' . $base . '">(.*?)</a></li>~',
'<li class="current">$1</li>', $menu);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.