部分文字列が文字列内にあるかどうかを知る最良の方法を知りたいです。
だから、私はこれらの種類の値を持つことができます:
"abcd.tif"
"abcd_A.tif"
"abcd_B.tif"
"abcd_VP.tif"
「_A」または「_B」または「_VP」が文字列に存在するかどうかを検出します。
最善の方法は何ですか? substr と strlen の組み合わせを使用していますか?
または正規表現を使用しますか?
を使用するstrpos
と、文字列内の針のインデックスが 0 の位置が得られます。文字列にない場合は、 をstrpos
返しますfalse
。(大文字と小文字を区別しない もありますstripos
)。
ただし、一度にチェックできる針は 1 つだけです。3 つのうちのいずれかを同時にチェックしたい場合は、ループを使用するか、簡潔ではあるが効率の悪い方法を書くことができます。
preg_match('/_A|_B|_VP/', $str)
...これらの 3 つの文字列のいずれかが一致するtrue
場合に返されます。
最も効率的な方法 (私が知っている:P) はstrposです。
$s = 'abcd_VP.tif';
if (strpos('_A', $s) !== false) {
// do your thing
}
この後、簡単に実行できます。||
それほど短くはありませんが、正規表現よりもはるかに高速です。
$s = 'abcd_VP.tif';
if ((strpos('_A', $s) !== false) || (strpos('_B', $s) !== false) || (strpos('_VP') !== false)) {
// do your thing
}
(_A)|(_VP) などの OR 演算を使用します。この質問をヒントとして確認してください:正規表現: AND 演算子はありますか? 、正規表現で「OR」を使用します。