Необходимо очистить html
-код от стилей, которые в него написал визуальный редактор.
Делаю так:
$handle = @fopen("new_item.htm", "r");
if ($handle) {
while (!feof($handle)) {
$buffer= fgetss($handle, 4096,'<img>,<title>,</title>,<table>,<tr>,</tr>,<td></td>,</table>');
$html_clean= trim(preg_replace('/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i','<$1$2>',$buffer));
echo($html_clean);
}
fclose($handle);
}
В результате чего получаю требуемый вид кода, но с пустым содержимым тега <img>
.
Как правильно дописать регулярку, чтобы она еще и игнорировала содержимое тега <img>
?
Хочу получить что-то вроде:
<table>
<tr><td><img src="/path/img.jpg" width="100" height="400"></td></tr>
</table>
Можно захватить целый тег <img>
и восстановить с помощью обратной ссылки в шаблоне замены, но в PCRE есть и другой способ: использовать механизм пропуска совпадения.
preg_replace('/<img\b[^<]*>(*SKIP)(*F)|<([a-z][a-z0-9]*)[^>]*?(\/?)>/i','<$1$2>',$buffer)
<img\b[^<]*>(*SKIP)(*F)|
означает: найди <img
, после g
должен быть символ, отличный от буквы/цифры или _
, затем 0+ символов, отличных от <
, а затем >
, а когда шаблон найдёт совпадение, всё это надо отбросить и продолжить поиск совпадений с того места, где закочнилось предыдущее совпадение.
Исключений может быть и больше, просто добавьте альтернативную группу: /(?:ДРУГОЙ_ШАБЛОН_ИСКЛЮЧЕНИЯ|<img\b[^<]*>)(*SKIP)(*F)|ВАШ_ОСНОВНОЙ_ШАБЛОН/i
.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Добрый день господа, столкнулся с такой проблемойРаньше делал парсер инвентаря пользователя, было все отлично
Ошибка Parse error: syntax error, unexpected $end in on line 48