PHP обрезать текст от слова до слова

Есть текст вида:

Вопрос: Как купить автомобиль безопасно? Ответ: Прежде всего, нужно обратиться в компанию...

Мне нужно убрать из текст всё начиная со слова "Вопрос" и до слова "Ответ", то есть фразу "Вопрос: Как купить автомобиль безопасно?".

Как это сделать через PHP?


Ответы (2 шт):

Автор решения: ZerxaFun aKa Zerxa
<?php

/**
 * Массив $data
 * @params $data['text'] - наш текст, с которым мы будем работать
 * @params $data['beginning'] - слово до которого мы будем обрезать наш текст.
 */
$data = [
    'text' => 'Вопрос: Как купить автомобиль безопасно? Ответ: Прежде всего, нужно обратиться в компанию...',
    'beginning' => 'Ответ'
];



$string = strpos($data['text'], $data['beginning']);
$result = substr($data['text'], 0, $string);

echo $result;

Мне совершенно непонятно, зачем вам это? Ведь куда лучше "вопрос" и "ответ" хранить в разных местах, так как пользователь в самом вопросе может написать слово "ответ" и тогда текст обрежеться на середине его предложения.

→ Ссылка
Автор решения: ordman

Можно использовать регулярное выражение. Будет обрезан весь текст до последнего паттерна Ответ:. Таким образом этот код сломается только в том случае, если в ответе паттерн встретится более чем 1 раз.

$str = 'Вопрос: Как купить автомобиль безопасно ответ? Ответ: не ясен. Ответ: Прежде всего, нужно обратиться в компанию...';
$res = preg_replace('/.*(?=Ответ:)/u', '', $str);
var_dump($res);

Run

→ Ссылка