Заменить содержимое между двумя словами

Я пытаюсь заменить содержимое между двумя словами, используя php. Содержание между двумя словами отличается, поэтому я не могу использовать традиционную строку str_replace. Я хочу заменить содержимое между двумя словами, например:

I would like to replace **some string of text** between two words

изменить на:

I would like to replace between two words

Вы можете видеть, что я удалил все формулировки между «некоторые» и «текст». Опять же, я не могу использовать обычную str_replace, потому что текст между двумя словами может отличаться. Например, он может сказать:

I would like to replace **some words of text** between two words

изменить на:

I would like to replace between two words

person user982853    schedule 30.09.2012    source источник
comment
$txt = preg_quote('some string of text'); $new = preg_replace("/$txt/", 'new text', $old); не работает?   -  person Marc B    schedule 30.09.2012


Ответы (2)


Регулярное выражение простое: /some .*? text/

Просто замените его пустой строкой.

person Niet the Dark Absol    schedule 30.09.2012
comment
Большое спасибо. Это сработало идеально. - person user982853; 30.09.2012

Согласно вашему вопросу, меняется только внутренняя часть вашей строки. Если это так, то это довольно тривиально, потому что у вас уже есть решение: вам не нужно его заменять, но вам просто нужно не принимать его:

$result = substr($string, 0, $startlen) . substr($string, -$endlen);

Вероятно, это поможет вам найти еще несколько «ракурсов разрешения» таких задач.

person hakre    schedule 30.09.2012