如果行只有5%的几率包含目标,数组上最有效的PHP str_替换?
我有一个15000行的PHP数组。我需要遍历每一行以生成15000行Javascript数组。PHP数组的每一行有5%的几率包含一个或多个HTML特殊字符,如如果行只有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数组的每一行,搜索一个与,如果存在,则搜索并替换(考虑到这只
ó代码>我需要用等效的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,"<");
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,"<");
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行需要替换.只是我的想法,我肯定是错的…好答案,也教会了我一些东西!这是一个好主意,将繁重的工作转移到浏览器上。我将重新编写来完成此操作。抱歉没有将此标记为答案,因为这更像是一个解决方法,尽管我认为我将采用此解决方法。好答案,教会了我一些东西很好!这是一个将繁重的工作转移到浏览器上的好主意。我将为此重新编写。很抱歉没有将此标记为答案,因为这更像是一个解决方法,尽管我认为我将使用此解决方法