在偏移之前查找最后一个空格字符?

时间:2014-11-14 02:24:23

标签: php

假设我有一个字符串,"快速的棕色狐狸"我想找到索引13之前或之前的空白字符的最后一次出现:

01234567890123456789
The quick brown fox
         ^

我该怎么做?我想对\s使用反向正则表达式搜索,但我不认为PHP支持在偏移之前向后搜索。有没有其他方法可以有效地做到这一点?

2 个答案:

答案 0 :(得分:2)

$string='the quick brown fox';
$ind=13;

function findWS($string,$ind)
{
   $string=substr($string,0,$ind+1);   
   preg_match('/\s*[^\s]+$/',$string,$match,PREG_OFFSET_CAPTURE );
   if(isset($match[0][1])) return $match[0][1]; else return -1; 
}

$v=findWS($string,$ind);

echo $v;

答案 1 :(得分:1)

我认为只要$pattern只匹配一个字符,这个就会起作用:

function rePosRev($subject, $pattern, $offset=null) {
    if($offset === null) $offset = strlen($subject);
    $search_str = strrev(substr($subject, 0, $offset));
    if(preg_match($pattern, $search_str, $m, PREG_OFFSET_CAPTURE)) {
        return $offset - $m[0][1] - 1;
    }
    return false;
}

echo rePosRev("The quick brown fox", '~\s~', 13); // 9

ideone