我想知道什麼是最好的方式來知道我的子串是否在字符串中。如何在字符串中找到發生?
那樣,我也有這幾樣價值:
"abcd.tif"
"abcd_A.tif"
"abcd_B.tif"
"abcd_VP.tif"
如果「_A」或「_B」或「_VP」出現在字符串中我將檢測。
最好的方法是什麼?使用substr和strlen的組合?
或使用正則表達式?
我想知道什麼是最好的方式來知道我的子串是否在字符串中。如何在字符串中找到發生?
那樣,我也有這幾樣價值:
"abcd.tif"
"abcd_A.tif"
"abcd_B.tif"
"abcd_VP.tif"
如果「_A」或「_B」或「_VP」出現在字符串中我將檢測。
最好的方法是什麼?使用substr和strlen的組合?
或使用正則表達式?
使用strpos
,它會給你在字符串中針的0索引位置。如果它不在字符串中,strpos
返回false
。 (也有不區分大小寫的stripos
)。
但是,一次只能檢查一根針。如果您想檢查任何三個的同時,你可以使用一個循環或寫的更簡潔但效率較低的方式:
preg_match('/_A|_B|_VP/', $str)
...這將返回true
如果任何這三個串火柴。
要找到匹配的內容以及它的位置,可以使用捕獲組和'PREG_OFFSET_CAPTURE'標誌。 – nickb
最有效的方法(我知道: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 )等檢查這個問題作爲提示:Regular Expressions: Is there an AND operator?,在正則表達式中使用'OR'。
曾經在PHP中看過strpos()函數(http://www.php.net/manual/en/function.strpos.php)嗎? –
好吧,preg_match比strpos函數更加高效,我猜(strpos將需要三個if/elseif塊)。所以,我會鼓勵寧可使用正則表達式。 – Rana
@MarkBaker>事實上,沒有看到,但我更喜歡使用preg_match – bahamut100