Вот пример
$otwet = 'Привет [rand]текст1|текст2|текст3[/rand] другое продолжение';
while(strpos($otwet, "[rand]") !== false) {
$pos1 = strpos($otwet, "[/rand]");
$buf_mas = substr($otwet, 0, $pos1);
$pos2 = StrCharPosBack($buf_mas, "[rand]");
$buf_mas = substr($buf_mas, $pos2+6);
$exploded_buf_mas = explode ("|", $buf_mas);
$rnd = rand(0, count($exploded_buf_mas)-1);
$otwet = substr_replace($otwet, $exploded_buf_mas[$rnd], $pos2, $pos1+7-$pos2);
}
// Функция ищет последнее вхождение символа
function StrCharPosBack($haystack, $needle) {
for ($i = strlen($haystack) ; $i>=0 ; $i--){
if (substr($haystack, $i, 1) === $needle)
return $i;
}
return false;
}
На выходе получаем
текст2 другое продолжение
Данный тег
[rand]текст1|текст2|текст3[/rand]
должен замениться случайным словом или предложением из тега, но он обрезает другие слова за тегом, как это исправить?