请教大神preg_replace如何替换成preg_replace_callback

沧海_ 2016-05-04 11:32:27
 private function escapeReserved($query)
{
$search = array ("/({)(\w+)(})/e",
"/({L#)([0-9]+)(})/e",
"/(\:)(uid|session|file|access|mode|comment|desc|size|start|end)/e",
)

$replace = array ("'\"\\1'.strtoupper('\\2').'\\3\"'",
"'\"\\1'.strtoupper('\\2').'\\3\"'",
"'\\1'.'db_'.'\\2'.'\\3'",)

return preg_replace($search, $replace, $query);
}


如何将preg_replace()替换成preg_replace_callback()呢
...全文
106 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
果酱很好吃 2016-05-04
  • 打赏
  • 举报
回复

$s = '{Test}{L#123456}:uid';

echo escapeReserved($s);// "{TEST}""{L#123456}":db_uid
echo '<br>';
echo test($s);//"{TEST}""{L#123456}":db_uid

function escapeReserved($query){
	$search = array ("/({)(\w+)(})/e", 
		"/({L#)([0-9]+)(})/e", 
		"/(\:)(uid|session|file|access|mode|comment|desc|size|start|end)/e"); 
	$replace = array ("'\"\\1'.strtoupper('\\2').'\\3\"'",
		"'\"\\1'.strtoupper('\\2').'\\3\"'",
		"'\\1'.'db_'.'\\2'.'\\3'");		 
	return preg_replace($search, $replace, $query); 
}

function test($query){
	$search = array ("/({)(\w+)(})/", 
		"/({L#)([0-9]+)(})/", 
		"/(\:)(uid|session|file|access|mode|comment|desc|size|start|end)/");
	return preg_replace_callback($search, function($m) {
		if(isset($m[3])){
			return '"'.$m[1].strtoupper($m[2]).$m[3].'"';
		}else{
			return "$m[1]db_$m[2]";
		}   
    }, $query);
}

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧