如何从字符串末尾删除退格字符?

时间:2016-02-07 18:22:21

标签: php

Litteraly,我为此而自杀。这应该是一件小事,但我已经花了几个小时的时间。

function ssl_encrypt($pass, $data) {

    $salt = substr(md5(mt_rand(), true), 8);

    $key = md5($pass . $salt, true);
    $iv = md5($key . $pass . $salt, true);

    $ct = mcrypt_encrypt (MCRYPT_RIJNDAEL_128, $key, $data,
                          MCRYPT_MODE_CBC, $iv);

    return base64_encode('Salted__' . $salt . $ct);
}

 $key = ssl_encrypt('super', trim($_POST['pass']));

我正在编写一个字符串并使用以下命令保存到文件:

 $value = $_POST['service'] . "=" . $key . "\n";


 file_put_contents($file, $value , FILE_APPEND); 

它输出的内容如下:

U2FsdGVkX1 + 0NB4 ++Kx28hUWNGwIqBoabI2O22U1TbpJ0n4FhzZvGtmSWiP7VOZj⏎

我认为最后一个符号就是这个" \ n"来自

 $value = $_POST['service'] . "=" . $key . "\n";

我甚至尝试过这样的事情:

   $value = $_POST['service'] . "=" . $key.PHP_EOL;

        $fh = fopen($file,"a+");

        fwrite($fh, $value); //write to txtfile

        fclose($fh);

仍然输出:

U2FsdGVkX1 + 0NB4 ++Kx28hUWNGwIqBoabI2O22U1TbpJ0n4FhzZvGtmSWiP7VOZj⏎

如何摆脱最后的退格符号?请注意,在这种情况下,substring不是一个选项。

这是我解密的方式:

function ssl_decrypt($pass, $data) {
    $data = base64_decode($data);
    $salt = substr($data, 8, 8);
    $ct = substr($data, 16);

    $key = md5($pass . $salt, true);
    $iv = md5($key . $pass . $salt, true);

    $pt = mcrypt_decrypt (MCRYPT_RIJNDAEL_128, $key, $ct,
                          MCRYPT_MODE_CBC, $iv);

    return $pt;
}

$Loader = new josegonzalez\Dotenv\Loader($pathtoenv);

//解析.env文件

$environment = (new josegonzalez\Dotenv\Loader($pathtoenv))
              ->parse()
              ->toArray();


$digitalpass = ssl_decrypt('super', (string)$_ENV['digital']);

2 个答案:

答案 0 :(得分:1)

我认为有很多方法可以做到:

  • 使用substr()删除最后一个字符:substr($output, 0, -1);
  • 使用chop()删除所需的字符串:chop($output,"⏎");
  • 或者也许使用trim(),就像肯尼所说:trim($output)

答案 1 :(得分:1)

使用以下代码段从字符串中删除所有不可打印的字符:

$trimmedVal = preg_replace("/\s+|[[:^print:]]/", "", $value)