我想知道知道我的子字符串是否在字符串中的最佳方法是什么。
所以,我可以拥有这些价值:
"abcd.tif"
"abcd_A.tif"
"abcd_B.tif"
"abcd_VP.tif"
我会检测字符串中是否存在“_A”或“_B”或“_VP”。
最好的方法是什么?使用substr和strlen的组合?
或使用正则表达式?
答案 0 :(得分:6)
使用strpos
,它将为您提供字符串中针的0索引位置。如果它不在字符串中,strpos
将返回false
。 (也有不区分大小写的stripos
)。
但是,您一次只能检查一根针。如果您想同时检查这三个中的任何一个,您可以使用循环或编写terser但效率较低的方式:
preg_match('/_A|_B|_VP/', $str)
...如果这三个字符串中的任何匹配,则会返回true
。
答案 1 :(得分:0)
最有效的方式(我知道: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
}
答案 2 :(得分:0)
使用OR操作,如(_A)|(_ VP)等。将此问题作为提示:Regular Expressions: Is there an AND operator?,在正则表达式中使用“OR”。