Оптимизация — оптимизирует ли PHP несколько вызовов strlen для цикла?

Я пытаюсь сделать функцию PHP, которая заменяет все вхождения между двумя строками для другой данной строки.

Я почти уверен, что выполнил то, что искал, однако во время программирования у меня было две версии. Я хотел бы, чтобы вы, ребята, объяснили мне, какой из них лучше.

Версия 1:

$html = "{tag param1|param2}<adfasdfsdf>adsfasdf<adsfasdfsd>{tag param1} {tag param2} sdfsdfadsfasdf";
$needle = array('{tag ', '}');
$placeholder = 'TEST';
$lengths = array(strlen($needle[0]), strlen($needle[1]), strlen($placeholder));
$offset = 0;
while(($startpos = strpos($html, $needle[0], $offset)) !== false){
$endpos = strpos($html, $needle[1], $startpos + $lengths[0]);
if($endpos === false) break;
$html = substr_replace($html, $placeholder, $startpos, $endpos - $startpos + 1);
$offset = $startpos + $lengths[2];
}
echo $html;

Версия 2:

$html = "{tag param1|param2}<adfasdfsdf>adsfasdf<adsfasdfsd>{tag param1} {tag param2} sdfsdfadsfasdf";
$needle = array('{tag ', '}');
$placeholder = 'TEST';
$offset = 0;
while(($startpos = strpos($html, $needle[0], $offset)) !== false){
$endpos = strpos($html, $needle[1], $startpos + strlen($needle[0]));
if($endpos === false) break;
$html = substr_replace($html, $placeholder, $startpos, $endpos - $startpos + 1);
$offset = $startpos + strlen($placeholder);
}
echo $html;

Этот код поиска для всех {tag ...........} случаи и заменить их TEST,

На данный момент я знаю, что это может быть микрооптимизация, но я бы хотел научиться.

Любая ошибка, которую вы видите или предложение приветствуется.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]