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

标签 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 中有这个,但我现在意识到它是错误的(因为它使用的是字符串而不是找到的字符)

最佳答案

尝试:

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/

相关文章:

javascript - 如何从 AJAX 提交的表单中获取响应?

javascript - 在 Rails 中,如何从我的 d3 js 代码访问 json?

java - 如何使用正则表达式从字符串中获取数字?

mysql - 从多个表和字符串中选择

php - 我可以计算 MySQL 中的 DateTime 范围吗

php - header ("Content-type: text/xml"的替代品);

javascript - Chrome 文件阅读器

javascript - 如何读取MVC集合中的序列化数据(通过Jquery POST发送)

c++ - 获取本地系统日期时间并将其转换为字符串 (MFC C++)

php - 警告:mysql_fetch_assoc():提供的参数不是第22行上/home/a5751969/public_html/func/album.func.php中的有效MySQL结果资源。