我最近将我的网站更新为PHP 5.6,自那以后,我开始使用e
修饰符出错。
以下是导致问题的功能:
function blockPrepareDisplay() {
static $search = array('/(.)@(.)/se');
static $replace = array('"&#" .sprintf("%03d", ord("\\1")) .";@&#" .sprintf("%03d", ord("\\2")) . ";";');
$resarray = array();
foreach (func_get_args() as $var) {
$var = htmlspecialchars($var, ENT_QUOTES);// Prepare var
$var = preg_replace($search, $replace, $var);
$var = preg_replace('/&#/', '&#', $var);
$var = str_replace(" "," ",$var);
$var = str_replace("&","&",$var);
$resarray[] = $var;// Add to array
}
if (func_num_args() == 1) {// Return vars
return $resarray[0];
} else {
return $resarray;
}
}
我理解静态$search = array('/(.)@(.)/se');
行是e
修饰符的行,我知道它已被弃用。一位朋友向我解释说,并解释说我伤口需要用preg_replace
替换preg_replace_callback
。我已经查看了php.net以及各地,但我认为这让我比以前更加困惑。
我已经尝试了几个星期现在有很多不同的事情,我有一个停止吐痰的错误,但我肯定它是错的,我更喜欢它是对的而不是错的。我这样做是为了取代preg_replace
$var = preg_replace_callback(
$search,
function($replace){
foreach($replace as $replaces){
return $replaces;
}
},
$var
);
而不是$var = preg_replace($search, $replace, $var);
。
我也删除了e修饰符。任何人都可以指出我的错误并举例说明我应该如何做到这一点吗?
答案 0 :(得分:0)
回调函数的参数是匹配组的数组。
我不明白为什么要使用阵列进行搜索和更换部件,我会这样做:
abc@def.org
<强>输出:强>
angular.module('dopasujApp').factory('getProducts', ['$http', function ($http) {
var dataFactory = {};
dataFactory.sort='ASC';
dataFactory.orderBy='PRODUCT_NAME';
dataFactory.search='a';
dataFactory.filters={};
dataFactory.filters.ATTRIBS=[46,25];
dataFactory.filters.SIZE=[165,40];
getProducts.listProducts = function() {
var request = $http({
method: "POST",
url: "http://******/backend/internalAPI.php?action=getListing&fit=1&limit=10&vendor=20",
headers: {
'Content-Type': 'application/json'
},
data: {
data: dataFactory
}
});
var products = angular.fromJson(request);
return products;
}
return false;
}]);