3

これはばかげた質問かもしれません。ユーザーがコンテンツを送信できるサイトを実行しています。

一部のユーザーは、(私にとっては)見たくない奇妙なキャラクターで遊んでいます。これらのいくつかを次に示します。

▄ █ ▄ █ ▄ █ ▄ █ ▄

これらの文字はどのようなもので、どのようにトリミングできますか? 私はこのような方法をいくつか試しましたが、© ® ...などのhtml特殊文字を失うことなく、どうすればそれを行うことができますか?

ありがとうございました

4

2 に答える 2

1

次のように、Unicode プロパティに基づいて文字を取り除くことができます。

// strip out symbols
echo preg_replace('/[\p{S}]+/u', '', 'Hello ▄ █ ▄ █ ▄ █ ▄ █ ▄ World');
// Hello World

デモ

正規表現の Unicode 機能の詳細については、マニュアルを参照してください。

残念ながら、上記のコードでは著作権と商標の記号も削除されます。これらの文字の例外を作成することを検討することをお勧めします。たとえば:

echo preg_replace('/[^\p{L}\p{Z}©®]+/u', '', 'Hello ▄ █ ▄ █ ▄ █ ▄ █ ▄ World © ®');
于 2013-10-03T08:48:58.387 に答える
0

htmlentities() または htmlspecialchars() を使用できます。

htmlentities()

この関数は、htmlentities() を除いてすべての点で htmlspecialchars() と同じです。HTML 文字エンティティに相当するすべての文字がこれらのエンティティに変換されます。

html特殊文字:

特定の文字は HTML で特別な意味を持ち、その意味を保持する場合は HTML エンティティで表す必要があります。この関数は、これらの変換の一部が行われた文字列を返します。作成された翻訳は、日常の Web プログラミングに最も役立つものです。すべての HTML 文字エンティティを翻訳する必要がある場合は、代わりに htmlentities() を使用してください。

違いはエンコーディングです。選択肢は、すべて (エンティティ) またはアンパサンド、二重引用符と一重引用符、より小さい、より大きい (specialchars) などの「特殊」文字です。

于 2013-10-03T08:50:52.790 に答える