0

我想知道知道我的子字符串是否在字符串中的最佳方法是什么。

所以,我可以拥有这些价值:

"abcd.tif"
"abcd_A.tif"
"abcd_B.tif"
"abcd_VP.tif"

我会检测字符串中是否存在“_A”或“_B”或“_VP”。

最好的方法是什么?使用 substr 和 strlen 的组合?

或使用正则表达式?

4

3 回答 3

6

使用strpos,它将为您提供针在字符串中的 0 索引位置。如果它不在字符串中,则strpos返回false. (也有不区分大小写的stripos)。

但是,您一次只能检查一根针。如果您想同时检查这三个中的任何一个,您可以使用循环或编写更简洁但效率较低的方法:

preg_match('/_A|_B|_VP/', $str)

true...如果这三个字符串中的任何一个匹配,它将返回。

于 2013-02-07T16:19:16.383 回答
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
}
于 2013-02-07T16:20:56.803 回答
0

使用 OR 操作,如 (_A)|(_VP) 等。检查这个问题作为提示:正则表达式:是否有 AND 运算符?, 在正则表达式中使用 'OR'。

于 2013-02-07T16:22:14.883 回答