php使用textarea存储json格式的配置数据

后端开发PHP 672

json是个好东西!

话说写过的东西根本记不住啊,今天又用到了再次记录一下吧,去年用ProcessWire做一个库存模块的时候遇到的一个场景:前端用的是jQuery DataTables插件用来显示数据,字段列不是固定的可以自定义要显示的字段,所以在后台我用的是Textarea存储了json格式数据,这样以来存储调用起来就很方便了,而且字段对象在ProcessWire中的处理是非常方便的,用Api可以很简单地完成对字段的各种处理。

json配置数据:

{"datatable":{"show":["stock_area","product","model","quantity","unit","fee"],"filter":["id","title","headline","stock_area.title","product.title","model","quantity","fee","summary"],"ignoreOrders":[3],"lengthMenu":[25, 50, 100, 200],"pageLength":25}}

这里存储了一些信息:show后面是用来显示的字段名;filter是可以检索的字段名;ignoreOrders是不参与排序的字段索引;lengthMenu是分页的每页显示的数量;pageLength是每页默认显示数量。

将字符转成json对象:

$object = json_decode(htmlspecialchars_decode($page->jsondata));

Textarea多行文本的逐行读取方法:

2017-10-18更新:

$keyword_list = trim($_REQUEST['keywords']);  
$keyword_arr = explode("\r\n", $keyword_list);  

这个地方需要注意是要去除textarea 前后的空格,否则会多出一个空行,或者使用explode也是可以的,只是不能用\r\n只能用双引号,不能用单引号。

	$rules = nl2br($page->jsondata);
	$rules = explode('<br />', $rules);
	if(count($rules) > 0)
	{
		foreach($rules as $rule)	
		{
			var_dump($rule);
		}
	}	

Post Comment