我有一些非常混乱的HTML,有很多span
和其他标签。
我正在尝试仅保留<span style="font-weight: bold">
,同时删除其他此类span标记。
到目前为止,我有这个:
$content = strip_tags($content, '<br>,<quote>,<code>,<pre>,<ul>,<li>,<ol>,<span>');
我想删除<span>
,因为它会全局添加所有其他span
,我只希望其中包含span
的{{1}}。我怎么能这样做?
答案 0 :(得分:2)
strip_tags
无法做到这一点。
看看HTML Purifier。它专为此用例而设计。您可以为其提供标签和属性的白名单。它还具有基本的CSS解析功能,允许您whitelist and blacklist CSS properties。
在这种情况下,您可能会执行以下操作:
// This has not been tested, but should work
$configuration->set('HTML.Allowed', 'br,quote,code,pre,ul,li,ol,span[style]');
$configuration->set('CSS.AllowedProperties', 'font-weight');
现在,你仍然会留下一些额外的span标签。你已经建议你只是想让它们消失。这会有点粘。您希望使用DOM操作工具来查找每个无用的跨度,捕获内容,删除跨度,然后插入跨度所在的内容。已经指出了phpQuery,Simple HTML DOM也应该这样做。 PHP自己的DOM extension也可以这样做,但它会更多地 更多的熊。