<?php
function highlight(string $search, string $number)
{
$searchBegin = NULL;
$searchIndex = 0;
$search = str_replace([',', '.'], '', $search);
foreach (str_split($number) as $numberIndex => $character) {
if ($character == $search[$searchIndex]) {
if (is_null($searchBegin)) {
$searchBegin = $numberIndex;
}
$searchIndex++;
if ($searchIndex == strlen($search)) {
return substr($number, 0, $searchBegin) .
'<span style="background: yellow">' .
substr($number, $searchBegin, $numberIndex - $searchBegin + 1) .
'</span>' .
substr($number, $numberIndex +1);
}
} elseif (!in_array($character, [',', '.'])) {
$searchBegin = NULL;
$searchIndex = 0;
}
}
return $number;
}
echo highlight('4321', '12,345,678.00') . PHP_EOL;
echo highlight('1234', '12,345,678.00') . PHP_EOL;
echo highlight('4567', '12,345,678.00') . PHP_EOL;
echo highlight('3,456', '12,345,678.00') . PHP_EOL;
echo highlight('7.80', '12,345,678.00') . PHP_EOL;
preferences:
24.54 ms | 406 KiB | 5 Q