【问题标题】:Removing whitespaces from encrypted data从加密数据中删除空格
【发布时间】:2012-09-25 19:54:56
【问题描述】:

我有一个解密早期解密数据的功能:

public function Decrypt($encrypedText) {
    $key = "The secret key is";
    $decryptedText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($encrypedText), MCRYPT_MODE_ECB);

    $trimmedData = rtrim($decryptedText, '\0');

    echo strlen($trimmedData);          // 32

    return $trimmedData;
}

如果我在函数中输入“测试”,结果将是“测试”+ 28 个空格。我从有人告诉我在上面的函数中使用“rtrim”来删除空格的提示,但这似乎不起作用(当我检查结果的长度时,它仍然是 32)。

如何去除这些空白?

【问题讨论】:

  • 你试过简单的trim()吗?
  • 你试过不带第二个参数的 trim() 吗?这样做会去除所有空白字符,而不仅仅是您指定的 NUL 字节字符。 $trimmedData = rtrim($decryptedText);php.net/manual/en/function.rtrim.php
  • @Buggabill:将您的评论转换为答案(或写一个新答案),我会接受它,因为它解决了我的问题。 :)

标签: php whitespace mcrypt strlen


【解决方案1】:

尝试在没有第二个参数的情况下调用rtrim()。这将去除大量空白字符,而不仅仅是您指定的 NUL 字节字符..

$trimmedData = rtrim($decryptedText);

【讨论】:

    【解决方案2】:

    奇怪,trim() 应该可以工作。试试正则表达式:

    $string = preg_replace('~\s+$~', '', $string);
    

    【讨论】:

    • 试过了,它仍然包含 32 个字符:/
    • 这证明那些字符不是空格。将输出字符串保存到文件中,并使用十六进制编辑器查看...
    • 点了!是否有另一种查看字符串而不将其保存到文件的方法?
    • 试试这个函数 strToHex($string) { $hex='';对于 ($i=0; $i
    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 2022-11-25
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多