ホームページ  >  記事  >  バックエンド開発  >  PHP は word_PHP チュートリアルから直接貼り付けられた書式なしの関数を削除します

PHP は word_PHP チュートリアルから直接貼り付けられた書式なしの関数を削除します

WBOY
WBOYオリジナル
2016-07-21 15:15:04979ブラウズ

一般的な処理方法は 2 つあります。 1. エディターの JS を介して直接削除します。 2. バックグラウンドで送信した後、プログラムを直接使用して無効なタグを削除します。以下に PHP による処理方法を紹介します。成功率は 100% ではない可能性があります。このプログラムはPHP公式サイトでも見かけたので、ここにも貼り付けておきます。

コードをコピー コードは次のとおりです:

function ClearHtml($content,$allowtags='') {

mb_regex_encoding('UTF-8')
//MS 特殊文字を最初に置き換えます
$search = array('/'/u', '/'/u', '/"/u', '/"/u', '/—/u'); , '' ', '"', '"', '-');
$content = preg_replace($search, $replace, $content);
// _all_ HTML エンティティがプレーンな ASCII エンティティに変換されることを確認します -表示されます
//一部の MS ヘッダーでは、一部の HTML エンティティがエンコードされており、一部はエンコードされていません
$content = html_entity_decode($content, ENT_QUOTES, 'UTF-8');
// 最初に C スタイルのコメントを削除してみます。 、これらは HTML コメントに埋め込まれているため、
//strip_tags による HTML コメントの削除を防ぐようです (MS Word では組み合わせが導入されました)
if(mb_stripos($content, '/*') !== FALSE){
$content = mb_eregi_replace ('# /*.*?*/#s', '', $content, 'm');
}
//strip_tags でキャッチされる可能性のある算術式にスペースを導入します。
// '<1' は '< 1' になります (注: アプリケーション固有です)
$content = preg_replace(array('/<([0-9]+)/'), array('< $1') , $content);

$content =strip_tags($content, $allowtags);
//行頭と行末、または 2 つ以上のスペースがある場所から余分な空白を削除し、1 つに変換します
$ content = preg_replace (array('/^ss+/', '/ss+$/', '/ss+/u'), array('', '', ' '), $content); CSS とスタイルタグの簡略化
$search = array('#<(strong|b)[^>]*>(.*?)#isu', '#< ;(em |i)[^>]*>(.*?)#isu', '#]*>(.*? )#isu');
$replace = array('$2', '$1< ;/u> ;');
$content = preg_replace($search, $replace, $content);

//一部の ?新しい MS Word エクスポートでは、'if gte mso 9' 形式の条件文が得られます。など、どうやら
//HTML コメントの 1 つにあるものはすべて、strip_tags による
//一部の MS スタイル定義を含む HTML コメントの削除を妨げているようです - この最後のビットにより、残ったコメントがすべて削除されます */
$num_matches = preg_match_all(" //isu ', ', $content);
}
return $content;


テスト結果:


コードは次のとおりです:
$content = '