代码之家  ›  专栏  ›  技术社区  ›  Ólafur Waage

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

  •  1
  • Ólafur Waage  · 技术社区  · 15 年前
    function escCtrlChars(str) 
    { 
        return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, 
                 function(c) { 
                     return '!' + c.charCodeAt(0) + '!'; 
        });
    }
    

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

    我的问题是。是 c 在浏览时找到的角色 str ?

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

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

    1 回复  |  直到 15 年前
        1
  •  4
  •   Emil H    15 年前

    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