Blame | Last modification | View Log | RSS feed
<?php namespace Fuse\Bitap;
function regex_search($text, $pattern, $tokenSeparator = ' +')
{
$regex = '/' . preg_replace('/' . str_replace('/', '\\/', $tokenSeparator) . '/', '|', str_replace('/', '\\/', preg_quote($pattern))) . '/';
$isMatch = (bool) preg_match($regex, $text, $matches);
$matchedIndices = [];
if ($isMatch) {
for ($i = 0, $matchesLen = sizeof($matches); $i < $matchesLen; $i++) {
$match = $matches[$i];
$matchedIndices[] = [ mb_strpos($text, $match), mb_strlen($match) - 1 ];
}
}
return [
'score' => $isMatch ? 0.5 : 1,
'isMatch' => $isMatch,
'matchedIndices' => $matchedIndices
];
}