【问题标题】:Text to Hex PHP Losing Characters文本到十六进制 PHP 丢失字符
【发布时间】:2013-12-13 17:47:37
【问题描述】:

我有下面的代码,我当时谷歌和搜索没有帮助

exec("echo -n '$cmd' | xxd -ps | sed -e ':a' -e 's/\([0-9]\{2\}\|^\)\([0-9]\{2\}\)/\1\\x\2/;ta' | sed 's|[\\x,]||g' | xargs echo -n | tr -d ' '", $cmdhex);

我正在使用 PHP 执行该操作

./test.php 'help1234'

输出为6c34

现在我知道是错误的十六进制值。如果我运行以下命令

只要现金我就能得到这个

echo -n 'help1234' | xxd -ps | sed -e ':a' -e 's/\([0-9]\{2\}\|^\)\([0-9]\{2\}\)/\1\\x\2/;ta' | sed 's|[\\x,]||g' | xargs echo -n | tr -d ' '

我的输出是

68656c7031323334

哪个是正确的。所以我的问题是,为什么我在通过php 使用exec 时得到错误的输出?

谢谢!

【问题讨论】:

  • 在 php 中,您需要转义反斜杠字符。
  • 谢谢,添加了额外的 \'s 并且它起作用了。我不是注册专家。 exp的
  • 我的最后一个问题是......为什么在命令中发送此exec("echo -ne '060e'.$hex.$cmdoutput | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie' >&3"); 与 php 它在命令中工作它在 php 中不起作用?
  • 可能是因为 $1 被空字符串替换了。
  • 我该如何解决这个问题? @Maerlyn

标签: php bash exec


【解决方案1】:

exec("...") 中的双引号计算一级反斜杠字符,因此正则表达式变得不同/损坏。

exec 参数字符串中添加第二级反斜杠或使用单引号和反斜杠。

【讨论】:

  • 你能帮我解决以上问题吗? @TE KO?似乎 1 美元被砍掉了,但似乎仍然无法解决这个问题
猜你喜欢
  • 1970-01-01
  • 2014-02-04
  • 2020-11-07
  • 2014-05-26
  • 1970-01-01
  • 2010-10-04
  • 2014-02-07
  • 2018-05-17
相关资源
最近更新 更多