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 中有这个,但我现在意识到它是错误的(因为它使用的是字符串而不是找到的字符)
最佳答案
尝试:
function escCtrlChars($str)
{
return preg_replace('/([\0\t\n\v\f\r\'\"!-])/ie', '"!".ord(substr("$1",0,1))."!"', $str);
}
e 修饰符指定应执行第二个参数中的代码。这基本上是通过使用为每个替换运行的 create_function() 创建一个新函数来完成的。您还必须添加括号以捕获模式。
像这样使用它:
$str = "foo\n\t'bar baz \rquux";
echo escCtrlChars($str)."\n";
产量:
foo!10!!9!!92!bar baz !13!quux
关于php - 如何将此 javascript 函数转换为 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1071634/