Я пытаюсь сделать функцию 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
,
На данный момент я знаю, что это может быть микрооптимизация, но я бы хотел научиться.
Любая ошибка, которую вы видите или предложение приветствуется.
Задача ещё не решена.
Других решений пока нет …