@lumb

Как вставить слово через определенное количество слов?

Доброго дня! Как найти середину текста и вставить туда слово на php
Через str_word_count считает,что-то не то, выводятся значения значительно меньшие,чем должны быть
т.е. в тексте 1100 слов, а str_word_count может нассчитать не больше 200 (что он считает не могу понять)
$totalWords = str_word_count(strip_tags($input));
$words = round($totalWords / 2);
$input = preg_replace('#^(.{$words}\S*?) #', "$1{$insert}", $input);
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
sandu2d
@sandu2d
Человек
Ну присоединюсь и я к этой вакханалии :)
<?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.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Как-то сложно всё.
str_word_count() вторым параметром принимает 0, 1 или 2 - флажки формата результата. Так вот, если поставить 2, то она вернёт массив, где ключом элемента будет позиция слова в строке, значение - само слово. Остаётся найти средину массива, и в эту позицию вставить слово.

Но нужно учесть, что это не обязательно середина текста. Середину проще найти, разделив надвое длину всего текста, и найдя к этой позиции ближайший пробел.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы