у меня есть несколько сотен специальных шаблонов кода, например:Алгоритм шаблон строки замены (PHP + регулярных выражений)
array(
'mask' => '98-###(###)',
'detect' => '98-\d\d\d(\d\d\d)',
),
...
И входных строк (только цифры), то, что это лучший способ обнаружения и формат (заменяя #
на цифры из входной строки)? Мои algorithm работает, но его очень медленно (мне нужно коды форматирования для каждого запроса) - Может ли кто-нибудь видеть, как это может быть улучшено:
<?php
class PCode
{
private static $vector = array (
0 => array (
'detect' => '247\\d\\d\\d\\d',
'mask' => '+247-####',
), // <<<<< more codes here
);
/**
*
* @param unknown $phs
* @return string
*/
public static function format($phn)
{
$result = $phn;
foreach(self::$vector as $row)
{
if(preg_match('/'.$row['detect'].'/s', $phn))
{
$reverse = array_reverse(str_split($phn));
$reverseMask = array_reverse(str_split($row['mask']));
$newresult = array();
$ridx = 0;
foreach($reverseMask as $k)
{
if($k=='#')
{
$newresult[] = $reverse[$ridx];
$ridx++;
}
else
$newresult[] = $k;
}
$result = implode('', array_reverse($newresult));
}
}
return $result;
}
}
'preg_match' - дорогой звонок. Старайтесь не делать это в цикле. – HamZa