php删除未知字符

时间:2015-08-14 07:29:39

标签: php laravel byte

我正在构建一个Web应用程序,它将以电子形式运行,角度为前端框架,laravel作为后端框架。在应用程序中,可以使用智能卡登录(感谢node-pcsclite),它会读取智能卡上的字节,然后将其转换。

智能卡包含一个链接到MSSQL数据库中staff表的代码。我可以从智能卡中检索代码,当我使用mysql作为数据库服务器时,我可以登录到应用程序。

现在,当我尝试使用mssql执行相同操作时,我收到一个错误,应该在html模式下查看而不是错误页面本身。

Screenshot

(代码可以是字母数字)

所以它添加了所有这些奇怪的字符(可能是不存在的字符),这不是很大的问题吗?至少,这就是我的想法。所以我尝试通过在laravel控制器中使用此代码来修复它:

preg_replace('/[^A-Za-z0-9\-]/', '', $string);

这没有解决任何问题。然后我想我的查询可能有问题,所以我运行SQL Profiler,问题是(可能是因为特殊字符)查询被破坏了。

select top 1 * from [Staff] where [CodeInit] = '
go

那么有谁知道如何真正删除这些奇怪的角色?

如果您需要更多信息,请随时提出。

1 个答案:

答案 0 :(得分:-1)

我遇到了这个问题,并在寻找解决方案时遇到了这个问题。我无法找到任何解决办法。

mdecrypt_generic()检索到不可打印字符的字符串,因此我想要一种方法来删除这些字符。当我将检索到的值从浏览器复制并粘贴到Brackets文本编辑器时,它会显示这些红点。

我只是将其粘贴到谷歌,然后将其编码为%10。到目前为止没有任何帮助,所以作为临时解决方案,我只是使用rtrim()删除这些点。

将圆点复制到括号中,并替换为"DOT_HERE"

rtrim(rtrim($pvp, "DOT_HERE"), "\0\4");

"\0\4"只会删除nulls and EOT但不会删除该点字符(%10)。

此处是带有红点的屏幕截图。您可以使用Brackets文本编辑器查看此内容。

enter image description here

请注意,$ pvp是解密文本。