Как вставить слово через определенное количество слов?
Как-то сложно всё.
str_word_count() вторым параметром принимает 0, 1 или 2 - флажки формата результата. Так вот, если поставить 2, то она вернёт массив, где ключом элемента будет позиция слова в строке, значение - само слово. Остаётся найти средину массива, и в эту позицию вставить слово.
Но нужно учесть, что это не обязательно середина текста. Середину проще найти, разделив надвое длину всего текста, и найдя к этой позиции ближайший пробел.
Ну присоединюсь и я к этой вакханалии :)<?php

$text = 'John draw real poor on call my from. May she mrs furnished discourse extremely.';

function putInMiddle(string $text, string $word): string
{
    $middlePosition = (int) strlen($text) / 2;
    $middleSpacePosition = strrpos($text, ' ', -$middlePosition);

    return substr_replace($text, ' ' . $word, $middleSpacePosition, 0);
}

echo putInMiddle($text, 'MY_MIDDLE_WORD');
Результат:John draw real poor on call my from. May MY_MIDDLE_WORD she mrs furnished discourse extremely.