繁体   English   中英

在str_replace中使用函数

[英]Using a function in str_replace

我正在尝试将一些Javascript手动转换为PHP。 我要转换的脚本是:

if (s)
    r += "\"" + s;
else
    r += "\"";

r += "\\\\\"+" + gv + "._+" + n.toString(16).replace(/[0-9a-f]/gi, function(c) {
    return gv + "." + b[parseInt(c, 16)] + "+"});
s = "";

我想出的是:

if ($s) {
    $r = $r . "\"" . $s;
} else {
    $r = $r . "\"";
}
$r = $r . "\\\\\"+" . str_replace([0-7],function($c, $GlobalVar, $b){
        return $GlobalVar.".".$b[$c]."+";
    },ord($n));

但我得到:

本地主机页面不起作用
本地主机当前无法处理此请求。
HTTP错误500

我假设在str_replace使用一个函数会破坏脚本,但是如果删除它,我不知道是否可以找到与Javascript代码相同的功能。 任何帮助表示赞赏。

php日志:

[2016年8月25日星期四12:46:43.157926 2016] [:错误] [pid 5864] [客户端127.0.0.1:53936] PHP可捕获的致命错误:类Closure的对象无法在/ var / www / html /中转换为字符串HTML / test.php的

错误很简单,您应该只阅读错误消息:

 Object of class Closure could not be converted to string

您要传递给函数的变量不是字符串。

而且您不能使用Javascript的相同语法,因为它与PHP不同,您无法进行“文字转换”

php函数的功能与js函数的功能完全不同。

假设gvb值相同,并且n是整数,则最后一行应为

$r = $r . "\\\\\"+$gv._+" . implode('', array_map(function($c) use ($b, $gv) {return $gv . "." . $b[hexdec($c)] . "+";}, str_split(dechex($n))));

或格式化以提高可读性:

$r = $r . "\\\\\"+$gv._+" 
    . implode(
        '', 
        array_map(
            function($c) use ($b, $gv) {
                return $gv . "." . $b[hexdec($c)] . "+";
            }, 
            str_split(dechex($n))
        )
    );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM