私はこれを見てきました...この正規表現は何を実現しますか?
preg_match("/.*" . $row['keyword'] . ".*/", $word, $matches);
何パターンが暗示してみませんか?
私はこれを見てきました...この正規表現は何を実現しますか?
preg_match("/.*" . $row['keyword'] . ".*/", $word, $matches);
何パターンが暗示してみませんか?
\n
(.
)でない0文字以上(*
)の後に続く、またはその前にある用語を見つけることを意味します。
他の場所で行われていない限り、$row['keyword']
をpreg_quote($row['keyword'], '/')
で囲む必要があります。
+1することができます。誰も正しくエスケープしません! –
それは意味がありました。この 'preg_quote'はウムラウトのようなドイツ語の文字でも安全ですか? –
@Defensorコードポイントがすべて「127」より小さいメタ文字に一致する文字のみを検索するので、これは必要です。 – alex
/
だけのパターンの区切りであり、それは単に$word
で、$row['keyword']
にあるものの文字列の出現を探していますので、.*
は「(改行以外の)任意の文字が0回以上の繰り返し」を意味します。
$row['keyword']
はキーワードは、このような
*
などのメタ文字を含む場合には、それは
$row['keyword']
に
preg_quote
を呼び出すことも、より安全だ、
$word
内に含まれているかどうかを確認しようとしている
、/
、\
など
説明:
/ # start of the regex
. # match anything (any character, etc - except for /n)
* # zero or more times
" . $row['keyword']. " # match the keyword
.* # same as above
/ # end of the regex
http://www.regular-expressions.info/ – Drewdin
$ row ['keyword']の正規表現コマンド文字は評価されることに注意してくださいd。キーワードが文字列内にあるかどうかだけを確認したい場合は、 'preg_quote'に' strpos($ string、$ row ['keyword'])!== FALSE'を実行して – Eli