我想知道知道我的子字符串是否在字符串中的最佳方法是什么。
所以,我可以拥有这些价值:
"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
...如果这三个字符串中的任何一个匹配,它将返回。
最有效的方法(我知道: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
}
使用 OR 操作,如 (_A)|(_VP) 等。检查这个问题作为提示:正则表达式:是否有 AND 运算符?, 在正则表达式中使用 'OR'。