0

発券システムのフロントエンドを構築しているときに、QA チームが発見した問題に遭遇しました。

問題は、印刷できない文字をフィルタリングしていないことです。これにより、奇妙な問題が発生する可能性があります。

  • サンプル コードのコピー アンド ペーストが機能しない
  • 複数の印刷不可能な文字を貼り付けてフォームを悪用するクライアント。実際には意味がありません。

クライアントに印刷できない文字を入力するように要求する場合は、テキスト ファイルをチケットにアップロードするようクライアントに要求できます。

では、非印刷物を削除する際に考慮すべきことは何でしょうか?

このディスカッションに参加したすべての参加者に、事前に感謝したいと思います。

4

2 に答える 2

1

どうやら、このリソースに基づいて、UTF-8 で印刷できない制御文字が 2 セットあるようです。

http://www.utf8-chartable.de/

それを念頭に置いて、関数内の配列は次のようになります。

array(
    '/\x00/', '/\x01/', '/\x02/', '/\x03/', '/\x04/',
    '/\x05/', '/\x06/', '/\x07/', '/\x08/', '/\x09/',
    '/\x0A/', '/\x0B/', '/\x0C/', '/\x0D/', '/\x0E/', '/\x0F/', '/\x10/',
    '/\x11/', '/\x12/', '/\x13/', '/\x14/', '/\x15/', '/\x16/', '/\x17/',
    '/\x18/', '/\x19/', '/\x1A/', '/\x1B/', '/\x1C/', '/\x1D/', '/\x1E/',
    '/\x1F/', '/\x7F/', '/\xC2 \x80/', '/\xC2 \x81/', '/\xC2 \x82/',
    '/\xC2 \x83/', '/\xC2 \x84/', '/\xC2 \x85/', '/\xC2 \x86/', '/\xC2 \x87/',
    '/\xC2 \x88/', '/\xC2 \x89/', '/\xC2 \x8A/', '/\xC2 \x8B/', '/\xC2 \x8C/',
    '/\xC2 \x8D/', '/\xC2 \x8E/', '/\xC2 \x8F/', '/\xC2 \x90/', '/\xC2 \x91/',
    '/\xC2 \x92/', '/\xC2 \x93/', '/\xC2 \x94/', '/\xC2 \x95/', '/\xC2 \x96/',
    '/\xC2 \x97/', '/\xC2 \x98/', '/\xC2 \x99/', '/\xC2 \x9A/', '/\xC2 \x9B/',
    '/\xC2 \x9C/', '/\xC2 \x9D/', '/\xC2 \x9E/', '/\xC2 \x8F/'
);
于 2015-05-07T16:34:48.827 に答える
0

現在、次の PHP メソッドを使用しています。

function filterNonPrintableCharacters($text)
{
    $text = preg_replace(
        array(
            '/\x00/', '/\x01/', '/\x02/', '/\x03/', '/\x04/',
            '/\x05/', '/\x06/', '/\x07/', '/\x08/', '/\x09/',
            '/\x0B/','/\x0C/','/\x0D/', '/\x0E/', '/\x0F/', '/\x10/', '/\x11/',
            '/\x12/','/\x13/','/\x14/','/\x15/', '/\x16/', '/\x17/', '/\x18/',
            '/\x19/','/\x1A/','/\x1B/','/\x1C/','/\x1D/', '/\x1E/', '/\x1F/'
        ),
        '',
        $text
    );

    return $text;
}

見落としがあるかもしれませんので、コメントいただけると助かります。

于 2013-02-22T10:25:36.553 に答える