【发布时间】:2016-08-15 20:48:57
【问题描述】:
我不确定这个 php 功能的确切命名,所以如果你有关于这个问题的更好标题的建议,欢迎。
重点是,我有一些这样写的字符串"ge\164\x42as\145\x44\151\x72",我想将它们转换为可读的字符(例如上面的字符串值为"getBaseDir")
如何使用 php 以编程方式完成此操作?
更新
这些字符串包含在一个 php 源文件中,我想对其进行解析和清理以便更具可读性。
因此,我希望有一个解决方案能够为我提供一种一次性解析和转换此字符串的方法(例如使用正则表达式)...
这里是部分代码,这样更容易理解场景
public function cmp($x74, $x7a)
{
$x76 = $this->x1c->x3380->{$this->xc1->x3380->xe269};
$x12213 = "\x68\145\x6c\x70\x65\x72";
$x11f45 = "\x67\x65\164\123t\x6fr\x65Co\156\146\x69\147";
if ($x76(${$this->x83->x3380->{$this->x83->x3380->{$this->x83->x3380->xd341}}}) == $x76(${$this->x83->x336e->{$this->xc1->x336e->{$this->xc1->x336e->x8445}}})) {
return 0;
}
return ($x76(${$this->x83->x334c->{$this->x83->x334c->x3423}}) < $x76(${$this->x83->x336e->{$this->xc1->x336e->{$this->xc1->x336e->x8445}}})) ? 1 : -1;
}
只是为了清除上面的代码是我们合法购买但我们需要自定义的扩展的一部分。
【问题讨论】:
-
该字符串是在 PHP 源代码 中按字面意思编写的,还是您从其他地方获得的值?如果它已经在源代码中,你只需要输出它:
echo "ge\164\x42as\145\x44\151\x72"; -
上面的字符串包含八进制转义序列(例如 \164)和十六进制转义序列(例如 \x42)的混合。 PHP 可以本机处理这两种情况。见php.net/manual/en/language.types.string.php
-
使用 cmets 询问更多信息或提出改进建议。避免在 cmets 中回答问题。
-
@deceze 是的,它在代码中(实际上这是一些开发人员使用
scrumbled他们的代码的愚蠢方式,我讨厌这种事情)我会测试你的建议......如果你可以把它放在答案中,一旦我确定它对我有用,我会接受它 -
所以
echo "ge\164\x42as\145\x44\151\x72";工作...!?