preg_quote()
отключит все специальные символы, которые вы использовали, например, .*?
.
Попробуйте что-то вроде:
preg_replace('#<li id="footer-poweredbyico">.*?</li>#s', '', $str);
Теперь сложный вопрос заключается в том, чтобы сделать это регулярное выражение«жадный».Прямо сейчас, это нечестиво, что означает, что он сломает вашу страницу, если внутри той, которую вы пытаетесь удалить, будет <li>
.Но если вы сделаете его жадным, он удалит все с начала тега <li>
до конца последнего элемента <li>
на странице, даже если это другой элемент <li>
.Ни один не идеален.Вот почему правильный анализатор HTML обычно лучше справляется с манипулированием HTML.
Но если страница достаточно проста, сработает регулярное выражение.
РЕДАКТИРОВАТЬ Исправлена грубая ошибка, благодаря @ Nilpo.