如何将此javascript函数转换为PHP?

时间:2009-07-01 22:16:26

标签: php javascript string

function escCtrlChars(str) 
{ 
    return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, 
             function(c) { 
                 return '!' + c.charCodeAt(0) + '!'; 
    });
}

好的,这是一个用字符串中的控制字符替换另一个以!开头和结尾的字符串的函数

我的问题是。通过c时找到的角色是str吗?
如果是这样,你如何在PHP中模仿这个功能。?

function escCtrlChars($str)
{
    return preg_replace('/[\0\t\n\v\f\r\'\"!-]/i', "!".ord($str[0])."!", $str);
}

我在PHP中有这个但我现在意识到这是错的(因为它使用的是字符串,而不是找到的字符)

1 个答案:

答案 0 :(得分:4)

尝试:

function escCtrlChars($str)
{
    return preg_replace('/([\0\t\n\v\f\r\'\"!-])/ie', '"!".ord(substr("$1",0,1))."!"', $str);
}

e修饰符指定应执行第二个参数中的代码。这基本上是通过使用为每次替换运行的create_function()创建一个新函数来完成的。您还必须添加paranthesis来捕获模式。

像这样使用它:

$str = "foo\n\t'bar baz \rquux";
echo escCtrlChars($str)."\n";

收率:

foo!10!!9!!92!bar baz !13!quux