PHP обрезать текст от слова до слова
Есть текст вида:
Вопрос: Как купить автомобиль безопасно? Ответ: Прежде всего, нужно обратиться в компанию...
Мне нужно убрать из текст всё начиная со слова "Вопрос" и до слова "Ответ", то есть фразу "Вопрос: Как купить автомобиль безопасно?".
Как это сделать через PHP?
Ответы (2 шт):
<?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;
Мне совершенно непонятно, зачем вам это? Ведь куда лучше "вопрос" и "ответ" хранить в разных местах, так как пользователь в самом вопросе может написать слово "ответ" и тогда текст обрежеться на середине его предложения.
Можно использовать регулярное выражение. Будет обрезан весь текст до последнего паттерна Ответ:. Таким образом этот код сломается только в том случае, если в ответе паттерн встретится более чем 1 раз.
$str = 'Вопрос: Как купить автомобиль безопасно ответ? Ответ: не ясен. Ответ: Прежде всего, нужно обратиться в компанию...';
$res = preg_replace('/.*(?=Ответ:)/u', '', $str);
var_dump($res);