Я проверил другие ответы, но не могу сделать следующее. Помогите кому-нибудь 🙂
Я хочу удалить все между ними и включить определенные 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 -->/"