簡體   English   中英

不了解php preg_replace中的正則表達式

[英]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://www.paitadesign.com/blog/php-e-css-come-evidenziare-la-pagina-corrente-nel-menu-di-navigazione/

如果您能提供幫助,我會很高興,我敢肯定這是個白痴問題!

豎線是定界符,將正則表達式與修飾符分開(通常,您會看到/作為定界符,但它可以是任何單個字符) 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM