@Korneliy

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

Имеется код:
$body = mb_substr($body,0,100);
$body = substr($body, 0, strrpos($body, '.'));

То есть, сперва строка обрезается до 100-го символа, потом обрезается до последней точки.

Имеется две проблемы:

  1. В строке вместо точки могут быть ! или ? Как сделать, чтобы все три значения учитывались?
  2. Если в строке нет точки, то совсем пустую выдает. Хотелось бы, чтобы выполнялось в этом случае только первое правило - обрезалось до 100 символа.


Перебрал и in_array, и array, и просто перебор с или - || - ничего не получается.

Заранее благодарю мастеров за решение это проблемы!
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@mix-9
простой вариант
$newLength = max(strrpos($body, '.'), strrpos($body, '!'), strrpos($body, '?'));
if($newLength < 1) $newLength = 100;
$body = substr($body, 0, $newLength);


более красиво будет с регулярным выражением. Это как раз возможность искать "массив"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
preg_replace("/^([^\.]+\.)/usi","",$body);
типа того, но код я не тестил...
В общем, regex нужно учить и тестить (regex101.com).

UPD: проверил - работает регулярка! Обалдеть)
$re = '/^([^\.]+\.)/usi';
$str = 'Тестовое предложение. Ещё одно.';
$subst = '';

$result = preg_replace($re, $subst, $str, 1);

echo "The result of the substitution is ".$result;
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы