php preg_replace все между конкретными тегами комментария html

Я проверил другие ответы, но не могу сделать следующее. Помогите кому-нибудь 🙂

Я хочу удалить все между ними и включить определенные html-комментарии

HTML:

Some HTML that must stay <!-- START IF USER_ID --> some html that must go <!-- END IF USER_ID --> Some more HTML that's gotta stay <!-- START IF USER_ID --> this also needs to go <!-- END IF USER_ID --> 

Итак, все между <!-- START IF USER_ID --> и <!-- END IF USER_ID --> и сами комментарии должны идти

Мой шаблон preg_replace (что явно неверно):

 "/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/" 

Результат должен быть

 Some HTML that must stay Some more HTML that's gotta stay 

Спасибо за проверку и за ответы заранее 🙂

Спасибо @mlwacosmos – используя предоставленную вами ссылку.

Достигнуто:

 $startPoint = '<!-- START IF USER_ID -->'; $endPoint = '<!-- END IF USER_ID -->'; $result = preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#si', '', $html); 

Это регулярное выражение выглядит отлично. Используйте модификатор m , чтобы точка совпадала с новыми символами:

 "/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/m" 

В качестве альтернативы вы можете использовать [\s\S] в качестве замены:

 "/<!-- START IF USER_ID -->[\s\S]*?<!-- END IF USER_ID -->/"