2012-03-23 10 views
-1

私はマッチングのために、彼らが使用している理由は、私が「/php/i」ではない得ることはありません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」)を持っています。私を助けてください。ありがとう

答えて

3

これはいわゆる"perl regular expression" syntaxと呼ばれますが、これはPerlから始まりましたが、多くの言語でよく使用されています。 /文字は正規表現を区切り、最後のi文字はoptionの一致動作を変更します - この場合、マッチは大文字と小文字を区別しない、つまり "PHP"、 "php"、 "PhP"などのすべての文字列に一致する

PHP manualで正規表現の詳細を読むことができます。

なぜスペースを使用しないのか - あなたは何を探したいのかによって決まります。全単語の一致には/\bphp\b/iを使用することをお勧めします。 \bは "単語境界"を意味します。

1

あなたは/ php /iと書くことができますが、これはスペースで囲まれた "PHP"文字列を意味します。これは素晴らしい考えではなく、実際にこのテストに失敗します。 /.../という表記は、perlスタイルの正規表現を書く方法です。それはちょうど/<pattern>/<flags>のすべてです

1

preg_*関数(PCRE)用のPHP正規表現は、in the PHP manualと記述されています。基本的には式が始まり、andsに区切り文字が付き、区切り文字の後ろに修飾子を置くことができます。 i修飾子は、大文字と小文字を区別しません。他の修飾語はhereと記載されている。

固定文字列を検索する場合は、代わりにstrposを使用してください。それはより速いです。

関連する問題