1

私の文には、次のようなASCII文字コードが含まれています

"#$%

すべての ASCII コードを削除するにはどうすればよいですか?

strip_tags()html_entity_decode()、 、を試しましたが、htmlspecialchars()うまくいきませんでした。

4

4 に答える 4

2

非ASCII文字に解決されるエンティティを削除しようとしていますか? それが必要な場合は、次のコードを使用できます。

$str = '" # $ % 琔'; // " # $ % 琔
// decode entities
$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
// remove non-ascii characters
$str = preg_replace('/[^\x{0000}-\x{007F}]/u', '', $str);

または

// decode only iso-8859-1 entities
$str = html_entity_decode($str, ENT_QUOTES, 'iso-8859-1');
// remove any entities that remain
$str = preg_replace('/&#(x[0-9]{4}|\d+);/', '', $str);

それがあなたが望むものではない場合は、質問を明確にする必要があります。

于 2012-08-24T14:34:57.023 に答える
2

戻り値が必要ない場合は、これを実行できます。

preg_replace('/(&#x[0-9]{4};)/', '', $text);

しかし、注意してください。これは基本的にニューカーであり、HTML エンティティの動作方法により、文字列の他の部分に干渉すると確信しています。それらを個人的に残して、@hakra が示すようにエンコードすることをお勧めします。

于 2012-08-24T14:13:46.200 に答える
1

手元にマルチバイト文字列拡張機能がある場合、これは機能します。

$string = '"#$%';
mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');

これは次のことを示します:

"#$%

大まかに関連しているのは次のとおりです。


DOM 拡張機能を使用すると、それを読み込んで文字列に変換できます。これにより、HTML 要素などをより適切に処理できるようになる可能性があります。

echo simplexml_import_dom(@DomDocument::loadHTML('"#$%'))->xpath('//body/p')[0];

出力は次のとおりです。

"#$%

HTML が含まれている場合は、他の回答で説明されているその要素の内部 html をエクスポートする必要がある場合があります。

于 2012-08-24T14:07:04.407 に答える
-1

文字列から日本語の文字を削除するには、次のコードを使用できます。

// Decode the text to get correct UTF-8 text:
$text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');

// Use the UTF-8 properties with `preg_replace` to remove all Japanese characters
$text = preg_replace('/\p{Katakana}|\p{Hiragana}|\p{Han}/u', '', $text);

ドキュメンテーション:

Unicode 文字のプロパティ
Unicode スクリプト

一部の言語は、複数のスクリプトで構成されています。日本語の Unicode スクリプトはありません。代わりに、Unicode は、日本語のドキュメントが通常構成されているひらがな、カタカナ、漢字、およびラテン文字を提供します。

ここでコードを試してください

于 2012-08-24T18:01:08.840 に答える