preg_replace_callback 数字 404 作为值
preg_replace_callback number 404 as value
我不清楚。在我刚刚使用 preg_replace
之前,但在 php 的较新版本上不得不使用 preg_replace_callback
之后我发生了这个
PHP message: PHP Warning: preg_replace_callback(): Requires argument 2, '[_1]', to be a valid callback in
这&c=jQuery31102606949325169924_1480249921485?_=1484049921486
$this->aURI = explode('/', $_SERVER['SCRIPT_NAME']);
$sRequest = preg_replace('!'.$this->sURI.'(.*)$!i', '', $_SERVER['REQUEST_URI']);
if(substr($sRequest, -1)!='/')
$sRequest .= '/';
$sGets = $this->parseUrl($sRequest);
我不知道,但我知道什么时候我插入 url,它的值是 404 任何我有白页的地方
private function parseUrl($sRequest){
$sVars = null;
foreach($this->aRoutingParse AS $k => $v){
if(!is_array($v))
continue;
preg_match_all('!\[(.+?)\]!i', $v[0], $aExpression_);
$sExpression = preg_replace_callback('!\[(.+?)\]!i', function($m) use ($k){
return $this->transformParam($m[1], $k);
}, $v[0]);
if(preg_match_all('!'.$sExpression.'!i', $sRequest, $aExpression__)){
foreach($aExpression__ AS $k_ => $v_){
foreach($v_ AS $kkk => $vvv){
if(!isset($aExpression_[1][$k_-1]))
$aExpression_[1][$k_-1] = null;
if($kkk>0)
$aExpression[] = array($aExpression_[1][$k_-1].'_'.$kkk, $vvv);
else
$aExpression[] = array($aExpression_[1][$k_-1], $vvv);
}
}
unset($aExpression[0]);
$iCount = count($aExpression__[0]);
if($iCount>1){
for($i=0;$i<$iCount;$i++){
if($i>0)
$sVars .= '&'.preg_replace_callback('!\[(.+?)\]!i', '[_'.$i.']', $v[1]);
else
$sVars = '&'.$v[1];
}
}else
$sVars = '&'.$v[1];
foreach($aExpression AS $k => $v_){
if(!isset($v['_'.$v_[0]]))
$v['_'.$v_[0]] = null;
if(!is_array($v['_'.$v_[0]]))
$sVars = str_replace('['.$v_[0].']', $v_[1], $sVars);
else {
$this->aRoutingParse = array($v['_'.$v_[0]]);
$sVars = $sVars.$this->parseUrl($v_[1]);
}
}
break;
}
}
return $sVars;
}
解决方法:
方法return首先找到第一个值
在 $this->aRoutingParse 我有这个并且不知何故崩溃
array('404' => array('404', 'task=page&action=404'),
preg_replace_callback
需要回调函数作为第二个参数。您在 preg_replace_callback('!\[(.+?)\]!i', '[_'.$i.']', $v[1])
.
中传递了一个字符串替换模式
改为 preg_replace_callback('!\[(.+?)\]!i', '[_'.$i.']', $v[1])
使用:
preg_replace('!\[(.+?)\]!i', '[_'.$i.']', $v[1])
我不清楚。在我刚刚使用 preg_replace
之前,但在 php 的较新版本上不得不使用 preg_replace_callback
之后我发生了这个
PHP message: PHP Warning: preg_replace_callback(): Requires argument 2, '[_1]', to be a valid callback in
这&c=jQuery31102606949325169924_1480249921485?_=1484049921486
$this->aURI = explode('/', $_SERVER['SCRIPT_NAME']);
$sRequest = preg_replace('!'.$this->sURI.'(.*)$!i', '', $_SERVER['REQUEST_URI']);
if(substr($sRequest, -1)!='/')
$sRequest .= '/';
$sGets = $this->parseUrl($sRequest);
我不知道,但我知道什么时候我插入 url,它的值是 404 任何我有白页的地方
private function parseUrl($sRequest){
$sVars = null;
foreach($this->aRoutingParse AS $k => $v){
if(!is_array($v))
continue;
preg_match_all('!\[(.+?)\]!i', $v[0], $aExpression_);
$sExpression = preg_replace_callback('!\[(.+?)\]!i', function($m) use ($k){
return $this->transformParam($m[1], $k);
}, $v[0]);
if(preg_match_all('!'.$sExpression.'!i', $sRequest, $aExpression__)){
foreach($aExpression__ AS $k_ => $v_){
foreach($v_ AS $kkk => $vvv){
if(!isset($aExpression_[1][$k_-1]))
$aExpression_[1][$k_-1] = null;
if($kkk>0)
$aExpression[] = array($aExpression_[1][$k_-1].'_'.$kkk, $vvv);
else
$aExpression[] = array($aExpression_[1][$k_-1], $vvv);
}
}
unset($aExpression[0]);
$iCount = count($aExpression__[0]);
if($iCount>1){
for($i=0;$i<$iCount;$i++){
if($i>0)
$sVars .= '&'.preg_replace_callback('!\[(.+?)\]!i', '[_'.$i.']', $v[1]);
else
$sVars = '&'.$v[1];
}
}else
$sVars = '&'.$v[1];
foreach($aExpression AS $k => $v_){
if(!isset($v['_'.$v_[0]]))
$v['_'.$v_[0]] = null;
if(!is_array($v['_'.$v_[0]]))
$sVars = str_replace('['.$v_[0].']', $v_[1], $sVars);
else {
$this->aRoutingParse = array($v['_'.$v_[0]]);
$sVars = $sVars.$this->parseUrl($v_[1]);
}
}
break;
}
}
return $sVars;
}
解决方法:
方法return首先找到第一个值 在 $this->aRoutingParse 我有这个并且不知何故崩溃 array('404' => array('404', 'task=page&action=404'),
preg_replace_callback
需要回调函数作为第二个参数。您在 preg_replace_callback('!\[(.+?)\]!i', '[_'.$i.']', $v[1])
.
改为 preg_replace_callback('!\[(.+?)\]!i', '[_'.$i.']', $v[1])
使用:
preg_replace('!\[(.+?)\]!i', '[_'.$i.']', $v[1])