php – 如何将已经生成的字符串(带单引号)转换为双引号字符串(因此可以对转义序列起作用)

我正在尝试使用$_POST读取已通过表单发送的数据.表单以八进制格式发送数据.这是表格的一部分:

<input type="hidden" name="chap-challenge" value="\314\130\024\000\350\025"

问题是,

echo $_POST['chap-challenge'];

会给我文字字符串:

\314\135\024\000\354\025

这是不一样的

echo "\314\135\024\000\354\025";

我怎么能以某种方式将该字符串转换为双引号,以便它可以理解它们是八进制值?

最佳答案
您可以将其评估为php表达式,但它缺乏安全性 – example.

<?php
echo "\100\101\102\103\104\n";

$c = '\100\101\102\103\104';
eval( '$c2="'.$c.'";' );

echo $c,"\n";
echo $c2;

编辑:

你也可以自己解析它 – example

<?
echo "\100\101\102\103\104\n";

$c = '\100\101\102\103\104';
$c2 = explode('\\',$c);
$c3 = array();
$c4 = array();
foreach($c2 as $cc) {
   $c3[] = octdec($cc);
   $c4[] = chr(octdec($cc));
}
$c4 = implode('',$c4);

echo $c,"\n";
var_dump($c3);
var_dump($c4);

编辑:

要从数组使用中删除第一项:array_shift function.

转载注明原文:php – 如何将已经生成的字符串(带单引号)转换为双引号字符串(因此可以对转义序列起作用) - 代码日志