0

spanたくさんのs やその他のタグを含む非常に乱雑な HTML があります。

<span style="font-weight: bold">他のそのようなスパンタグを削除しながらのみ保持しようとしています。

私はこれまでのところこれを持っています:

$content = strip_tags($content, '<br>,<quote>,<code>,<pre>,<ul>,<li>,<ol>,<span>');

<span>他のすべての s をグローバルに追加するため、削除しspanたいのですが、spansだけが必要ですfont-style。これどうやってするの?

4

1 に答える 1

2

strip_tagsこれはできません。

HTML Purifierを見てください。これはまさにこのユースケースに合わせて設計されています。許可するタグと属性のホワイトリストを与えることができます。また、基本的な CSS 解析機能も備えているため、CSS プロパティをホワイトリストおよびブラックリストに登録できます。

この場合、おそらく次のようにします。

// 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');

これで、いくつかの余分なスパン タグが残ります。あなたは単にそれらをなくしてほしいと提案しました。これは少し粘着性があります。DOM 操作ツールを使用して、不要なスパンをそれぞれ見つけ、コンテンツをキャプチャし、スパンを削除してから、スパンがあった場所にコンテンツを挿入します。 phpQueryは既に指摘されており、Simple HTML DOMもそのトリックを行う必要があります。PHP 独自のDOM 拡張機能でもこれを行うことができますが、それはかなり面倒です。

于 2012-12-15T19:18:36.963 に答える