1

奇妙な問題が発生しました。

お客様の銀行予約にトランザクション ID を次の形式で使用しています: U123C123P123B123.

テスト予約の後、「ctrl+c」を使用して、オンライン バンキングの出力からトランザクション ID (正しく表示された) テキストをコピーしました。(strg+v を貼り付けて) システムに再度入力されたこのテキストは、次の理由により処理できませんでした。

貼り付け時、「<wbr>」はマイナス記号に変わります。マイナス記号はフォーム フィールドに表示されません。しかし、それは通過します。MySQL は、その奇妙なマイナス記号でリクエストを処理できません。

バンク出力のソース コードは次のとおりです: " U123C123P123<wbr>B123"。

ほとんどのソフトウェア (firefox、thunderbird など) は、貼り付け後に正しい T-ID を表示します。notepad++、Dreamweaver などの一部のエディタでは、マイナス記号を含む貼り付けられた T-ID が表示されます。いいね: " U123C123P123-B123"

この薄暗いマイナス記号を削除するにはどうすればよいですか? 私はすでに str_replace と strip_tags を試しました。

私の英語でごめんなさい。

4

1 に答える 1

0

私の最善の推測は、何らかの形で特定の文字が B123 の前に出力されることです。

オンラインバンキングシステムを確認してください。トランザクション ID が表示されているページに移動し、ハード ドライブに保存します。印刷できない文字を表示できるエディター (Linux では vi など) で開き、特定の文字列が表示される領域を確認します。文字列に文字が含まれている場合は<wbr>、オンライン バンキング システム ソフトウェアを変更して、その文字が出力されないようにすることができます。

ただし(私が推測するように)そのシステムを変更するという点でそのシステムにアクセスできず、最終的に問題を修正する必要がある場合は、フォームフィールドにフィルターを添付するか、データをフィルターする前に自分でフィルターすることができますデータベース呼び出し。

$field = strtoupper($_POST['transaction_id']);
$sanitized = str_replace('<WBR>', '', $field);
$sanitized = str_replace(chr(173), '', $sanitized);

173 はソフト ハイフンな&shyので、入ってくる可能性が最も高いです。投稿されたデータに対していつでも var_dump を実行し、入ってくるものの実際の ASCII コードを確認できます。

HTH

于 2012-09-26T18:24:06.163 に答える