如何在字符串中查找事件?

时间:2013-02-07 16:16:08

标签: php regex string substring

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

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

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

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

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

或使用正则表达式?

3 个答案:

答案 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”。