I've checked other answers but can't seem to do the following. Please help someone :)
I want to remove everything in between and including specific html comments
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 -->
So everything in between <!-- START IF USER_ID -->
and <!-- END IF USER_ID -->
and the comments itself needs to go
My preg_replace pattern (which is obviously wrong):
"/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/"
Result should be
Some HTML that must stay
Some more HTML that's gotta stay
Thanks for checking and for the answers in advance :)
Thanks @mlwacosmos - Using the link you provided.
Achieved with:
$startPoint = '<!-- START IF USER_ID -->';
$endPoint = '<!-- END IF USER_ID -->';
$result = preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#siU', '', $html);
That regex looks fine. Use an m
modifier to make the dot match newlines:
"/<!-- START IF USER_ID -->.*?<!-- END IF USER_ID -->/m"
Alternatively, you could use [\\s\\S]
as a substitute:
"/<!-- START IF USER_ID -->[\s\S]*?<!-- END IF USER_ID -->/"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.