web直接封装成php,封装php类批量解析css成json格式_html/css_WEB-ITnose

本文介绍了一个PHP类,用于将CSS批量解析成JSON格式,适用于自定义建站系统的样式配置存储。通过替换和切割字符串,将CSS转换为键值对,并最终转化为JSON数组。代码包括ImportCss、arrayToCss和strToJson三个函数,实现了从CSS到JSON的转换流程。示例代码展示了如何解析并打印CSS样式的JSON表示。
摘要由CSDN通过智能技术生成

封装php类批量解析css成json格式

业务需求 我相信很多同学有过做一个自定义建站系统的想法,好比某空间的自定义拖拽组件,如果想要实现一个可视化建站系统,那CSS作为前端样式而言,是必须要存入到数据库中作为配置项的,所以,这里不可避免的需要对css做解析,我这里给出我的解析方法,当然还有很大的优化空间,这只是一个初版,实现了最原始的解析过程,希望大家拍砖。

实现方法

话不多说,先上代码,咱们先睹为快。

/**

Css解析成json类

Author:dreamzk

Data: 2015.05.21.0001

Release:b.15.05.21.01

*/

class CsstoJson{

/**

* CSS批量导入功能

* @function ImportCss

* @param $data{xxx:XXX; yyy:YYY;}

* @Description 按照一定规则导入CSS样式结构入库

* @return boolean

*/

public function ImportCss($post){

$data = str_replace("}","}&",$post); # 将}替换成}&

$data =explode('&',$data); # &用于切割每个css样式表到数组

array_pop($data); # 去掉最后一个数组元素

$JsonData =self:: arrayToCss($data);

$length =1-count($JsonData);

$JsonData = substr($JsonData,$length,-1); # 截取字符串最后

$JsonData = "{".$JsonData."}";

$JsonData = json_decode($JsonData,true); # 转换成json数组

return $JsonData;

}

/**

* CSS数据样式化函数

* @function array_to_css

* @param $ArrayData 为格式话的css样式数据

*/

public function arrayToCss($ArrayData){

$GetData=null;

//遍历传送过来的数组

foreach($ArrayData as $key => $arraydatas ){

$arraydatas = str_replace("{","&{",$arraydatas); # 替换传送过来数据中的 { ,便于之后做字符串转换

$arraydatas = explode('&',$arraydatas);

$jsondata = self::strToJson($arraydatas);

$GetData =$GetData.$jsondata.",";

}

return $GetData;

} /** * 解析数组里面的字符串操作 * @function strToJson * $Strdata 二维数组,里面含有 */public function strToJson($Strdata){ //替换CSS数据名称 $Strdata['0'] = str_replace(".","",$Strdata['0']); $Strdata['1'] = str_replace("{","",$Strdata['1']); $Strdata['1'] = str_replace("}","",$Strdata['1']); $temp = null; $StrdataChild = explode(';',$Strdata['1']); array_pop($StrdataChild); foreach($StrdataChild as $key => $StrdataChilds){ $StrdataChilds = explode(':',$StrdataChilds); # 分解每个类名下面的属性与具体数值的键值对 $ProName = trim($StrdataChilds['0']); # 去掉表单字段的空格,不然入库无法识别 $jsondata = "\"".$ProName."\"".':'."\"".$StrdataChilds['1']."\","; # 把类似height:10px这样的键值对分开成想要的数据结构 $temp = $temp.$jsondata; # 操作css的height等具体字段配置关系 } $ClassName = trim($Strdata['0']); # 去掉表单字段的空格,不然入库无法识别 #获取当前字符串的长度 $length =1-count($temp); #截取字符串最后 $temp = substr($temp,$length,-1); #把当前所属分类名称加入到子集中 $temp = "\""."classname"."\"".":"."\"".$ClassName."\"".",".$temp; return "\"".$Strdata['0']."\"".":"."{".$temp."}";}

} $cssdata = ".wrapper .box{border:1px #e1e1e1 solid;}.wrapper .box .title{height:31px;border-bottom:1px #e1e1e1 solid;line-height:30px;}";$toJson = new CsstoJson();$reData = $toJson->ImportCss($cssdata);var_dump($reData);

思路分析

我这里是已经封装成一个类了,起哄三个函数分别处理了什么事情呢?

第一个函数importCss我们把批量的css数据根据大括号的多少切割多少个数组

然后把切割好的数据传值到第二个函数,然后遍历数组即可对每一组数据进行处理,再根据每一个css语句都是以分好结束作为数组分隔符切割成数组

第三个函数既是对分割好的数组按照json键值对的方式组合好。

总结

函数的复用性还是不是很高,希望各位看官如果有更好的方法,欢迎拍砖讨论。

如果您有任何意见或建议,请联系作者

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 来表示数据库表,使用的实例表示表中的行。 开发者可以定义之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值