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 代码。

高温高压

于 2012-09-26T18:24:06.163 回答