Удаление большинства встроенных стилей и свойств с помощью PHP - PullRequest
0 голосов
/ 16 апреля 2010

Этот вопрос относится к аналогичному случаю, а именно Удаление встроенных стилей с помощью php

Решение там не удаляет то есть: <font face="Tahoma" size="4">

Но скажем, у меня есть смешанный пакет встроенных стилей и свойств, например:

<ul style="padding: 5px; margin: 5px;">
    <li style="padding: 2px;"><div style="border:2px solid green;">Some text</div></li>
    <li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li>
    <li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li>  
</ul>

Какой regExp необходим для достижения этого результата?

<ul>
    <li><div>Some text</div></li>
    <li><font>Some text</font></li>
    <li><font>Some text</font></li>  
</ul>

1 Ответ

5 голосов
/ 16 апреля 2010

Как обычно, регулярное выражение не идеально подходит для анализа HTML; вполне возможно, что вам лучше использовать настоящий HTML-парсер.

Это говорит ...

$noattributes = preg_replace('/<(\w+) [^>]+>/', '<$1>', $original);

... заменит любые открывающие теги, которые содержат атрибуты, соответствующими тегами без атрибутов. Однако он может также случайно попасть в «теги», содержащиеся в атрибутах других тегов, заключенных в кавычки (и, таким образом, в действительности не сами теги). Это также вызовет проблемы с самозакрывающимися тегами (заменит <br /> на <br>) - хотя этого можно избежать, если у самозакрывающихся тегов нет пробела между именем тега и косой чертой. 1008 *

...