2012-03-23 34 views
-1

我從php.net提供參數,以pregmatch

<?php 
// The "i" after the pattern delimiter indicates a case-insensitive search 
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { 
    echo "A match was found."; 
} else { 
    echo "A match was not found."; 
} 
?> 

進行匹配下面的PHP代碼,爲​​什麼他們用我不明白「/php/i」不是(「php」)。請幫助我。謝謝

回答

3

這就是所謂的"perl regular expression" syntax,它起源於Perl,但通常在很多語言中使用。 /字符分隔正則表達式,最後一個i字符是修改匹配行爲 - 在這種情況下,說匹配應該不區分大小寫,即匹配「PHP」,「php」,「PhP」等所有字符串

您可以在PHP manual的正則表達式中閱讀更多內容。

如果你問他們爲什麼不使用周圍的空間 - 這取決於你想找到什麼。我建議使用/\bphp\b/i來匹配整個單詞。 \b的意思是「文字邊界」。

1

你可以寫/ php /i,但是這將表明你想要你的「PHP」字符串被空格包圍,這不是一個好主意,事實上這個測試會失敗。 /.../表示法是您編寫perl樣式正則表達式的方式。它只是/<pattern>/<flags>這就是全部

1

preg_*函數(PCRE)的PHP正則表達式使用分隔符,如in the PHP manual所述。基本上,你的表情開始並且帶有分隔符,並且在分隔符之後可以放置修飾符。 i修飾符使表達式不區分大小寫。其他修飾符描述爲here

而如果你正在尋找一個固定的字符串,你應該使用strpos來代替。這是更快。