PHP获取包含特定字符的子字符串的开始和结束位置

时间:2013-11-15 16:35:57

标签: php

我正在进行一些字符串处理,并希望知道如何获取包含某些字符或条件的子字符串的开始和结束索引。

例如:

我有一个字符串:

"hello this is MY_EXAMPLE_STRING"

我希望能够找到MY_EXAMPLE_STRING的开始和结束索引

函数原型可能如下所示:

$string = "hello this is MY_EXAMPLE_STRING";
$capitals = true;
$myArray = findIndices($string, $capitals, '_');

因此它将返回具有大写和下划线的任何子字符串的匹配开始和结束索引。

也许正则表达式最适合这个?如果我用大写字母和下划线搜索子字符串?

编辑:

为了清晰起见,编辑了我的问题。

1 个答案:

答案 0 :(得分:0)

是的,我认为Regex是最好的选择,就是这样:

$string = "hello this is MY_EXAMPLE_STRING";
$pattern = "/[A-Z]/";

preg_match($pattern,$string,$match,PREG_OFFSET_CAPTURE);

$index = $match[0][1];
$substring = substr($string, $index);

echo 'start at '.$index;
var_dump($substring);
echo 'end at '. ($index + strlen($substring));

或者在多次出现的情况下可能是这样的:

$string = "this is MY_STRING and ANOTHER_STRING";
$pattern = "/[A-Z|_]+/";

preg_match_all($pattern,$string,$match,PREG_OFFSET_CAPTURE);

foreach($match[0] AS $k => $m )
{
    $index = $m[1];
    $substring = $m[0];

    echo 'Start at '.$index;
    var_dump($substring);
    echo 'End at '. ($index + strlen($substring)) . '<br />';
}