如果行只有5%的几率包含目标,数组上最有效的PHP str_替换?

如果行只有5%的几率包含目标,数组上最有效的PHP str_替换?,php,arrays,str-replace,Php,Arrays,Str Replace,我有一个15000行的PHP数组。我需要遍历每一行以生成15000行Javascript数组。PHP数组的每一行有5%的几率包含一个或多个HTML特殊字符,如ó我需要用等效的javascript十六进制替换它。我需要查找和替换大约50个HTML特殊字符,因此我会使用str\u replace(数组\u的HTML\u目标,数组\u的十六进制\u replacements,haystack)。以下做法是否更有效: 遍历PHP数组的每一行,搜索一个与,如果存在,则搜索并替换(考虑到这只

我有一个15000行的PHP数组。我需要遍历每一行以生成15000行Javascript数组。PHP数组的每一行有5%的几率包含一个或多个HTML特殊字符,如
ó我需要用等效的javascript十六进制替换它。我需要查找和替换大约50个HTML特殊字符,因此我会使用
str\u replace(数组\u的HTML\u目标,数组\u的十六进制\u replacements,haystack)
。以下做法是否更有效:

  • 遍历PHP数组的每一行,搜索一个与,如果存在,则搜索并替换(考虑到这只适用于5%的行)
  • 在整个阵列上执行搜索和替换
  • 将数组连接成一个巨型字符串,并对巨型字符串执行搜索和替换
  • 其他想法?请说明

  • 顺便说一句,15000 PHP数组的原因是这是一个数据可视化应用程序。

    既然您已经需要将PHP数据转储到字符串(可能是JSON)中,您也可以处理最后一个字符串,如下所示:

    $json = json_encode($your_php_array);
    $unhtmlref = preg_replace_callback("/&#(x[0-9a-f]+|\d+);/",function($m) {
        if( $m[1][0] == "x") $m[1] = substr($m[1],1);
        else $m[1] = dechex($m[1]);
        return sprintf("\\u%04s",$m[1]);
    },$json);
    
    这是安全的,因为HTML字符代码在JSON字符串中没有任何特殊意义

    也就是说,我的JavaScript“实用工具带”中有一个函数,它执行类似的操作:

    function unHTMLref(str) {
        // take a string and return it, with all HTML character codes parsed
        var div = document.createElement('div');
        div.innerHTML = str.replace(/</g,"&lt;");
        return div.firstChild.nodeValue;
    }
    
    函数unHTMLref(str){
    //获取一个字符串并返回它,同时解析所有HTML字符代码
    var div=document.createElement('div');
    
    div.innerHTML=str.replace(/因为您已经需要将PHP数据转储到一个字符串(可能是JSON)中,所以您最好处理最后一个字符串,如下所示:

    $json = json_encode($your_php_array);
    $unhtmlref = preg_replace_callback("/&#(x[0-9a-f]+|\d+);/",function($m) {
        if( $m[1][0] == "x") $m[1] = substr($m[1],1);
        else $m[1] = dechex($m[1]);
        return sprintf("\\u%04s",$m[1]);
    },$json);
    
    这是安全的,因为HTML字符代码在JSON字符串中没有任何特殊意义

    也就是说,我的JavaScript“实用工具带”中有一个函数,它执行类似的操作:

    function unHTMLref(str) {
        // take a string and return it, with all HTML character codes parsed
        var div = document.createElement('div');
        div.innerHTML = str.replace(/</g,"&lt;");
        return div.firstChild.nodeValue;
    }
    
    函数unHTMLref(str){
    //获取一个字符串并返回它,同时解析所有HTML字符代码
    var div=document.createElement('div');
    
    div.innerHTML=str.replace(/“我有一个15000行的PHP数组。”我不知道您在做什么,但毫无疑问还有更好的方法。听起来您需要了解。
    str\u replace()
    (或任何其他选择性替换函数)will,从本质上讲,搜索字符串以查找相关字符,因此首先手动搜索它们并不会加快速度。因此,我认为您的选项1过于复杂是毫无意义的。Spudley,感谢您的输入。我没有进行html_entity_解码的原因是我不确定如何从中获取javascript十六进制代码我不确定str_replace是否对我正在寻找的50个特殊字符更有效。我之所以考虑在搜索和替换之前先搜索字符串中的“与”,是因为在搜索50个字符串之前,似乎会先搜索1个字符,因为在20行中只有1行需要替换.就我的想法而言,我肯定是错的…”我有一个15000行的PHP数组。“我不知道你在做什么,但毫无疑问有更好的方法。听起来你需要了解。
    stru replace()
    (或任何其他选择性替换函数)will,从本质上讲,搜索字符串以查找相关字符,因此首先手动搜索它们并不会加快速度。因此,我认为您的选项1过于复杂是毫无意义的。Spudley,感谢您的输入。我没有进行html_entity_解码的原因是我不确定如何从中获取javascript十六进制代码我不确定str_replace是否对我正在寻找的50个特殊字符更有效。我之所以考虑在搜索和替换之前先搜索字符串中的“与”,是因为在搜索50个字符串之前,似乎会先搜索1个字符,因为在20行中只有1行需要替换.只是我的想法,我肯定是错的…好答案,也教会了我一些东西!这是一个好主意,将繁重的工作转移到浏览器上。我将重新编写来完成此操作。抱歉没有将此标记为答案,因为这更像是一个解决方法,尽管我认为我将采用此解决方法。好答案,教会了我一些东西很好!这是一个将繁重的工作转移到浏览器上的好主意。我将为此重新编写。很抱歉没有将此标记为答案,因为这更像是一个解决方法,尽管我认为我将使用此解决方法