📄 dedeatt.class.php
字号:
<?php
/**********************************************
function c____DedeAtt();
**********************************************/
//属性的数据描述
class DedeAtt
{
var $Count = -1;
var $Items = ""; //属性元素的集合
//获得某个属性
function GetAtt($str)
{
if($str=="")
{
return "";
}
if(isset($this->Items[$str]))
{
return $this->Items[$str];
}
else
{
return "";
}
}
//同上
function GetAttribute($str)
{
return $this->GetAtt($str);
}
//判断属性是否存在
function IsAttribute($str)
{
return isset($this->Items[$str]) ? true : false;
}
//获得标记名称
function GetTagName()
{
return $this->GetAtt("tagname");
}
// 获得属性个数
function GetCount()
{
return $this->Count+1;
}
}
/*******************************
//属性解析器
function c____DedeAttParse();
********************************/
class DedeAttParse
{
var $SourceString = "";
var $SourceMaxSize = 1024;
var $CAtt = ""; //属性的数据描述类
var $CharToLow = TRUE;
//////设置属性解析器源字符串////////////////////////
function SetSource($str="")
{
$this->CAtt = new DedeAtt();
$strLen = 0;
$this->SourceString = trim(preg_replace("/[ \t\r\n]{1,}/"," ",$str));
$strLen = strlen($this->SourceString);
if($strLen>0&&$strLen<=$this->SourceMaxSize)
{
$this->ParseAtt();
}
}
//////解析属性(私有成员,仅给SetSource调用)/////////////////
function ParseAtt()
{
$d = "";
$tmpatt="";
$tmpvalue="";
$startdd=-1;
$ddtag="";
$notAttribute=true;
$strLen = strlen($this->SourceString);
// 这里是获得Tag的名称,可视情况是否需要
// 如果不在这个里解析,则在解析整个Tag时解析
// 属性中不应该存在tagname这个名称
for($i=0;$i<$strLen;$i++)
{
$d = substr($this->SourceString,$i,1);
if($d==' ')
{
$this->CAtt->Count++;
if($this->CharToLow)
{
$this->CAtt->Items["tagname"]=strtolower(trim($tmpvalue));
}
else
{
$this->CAtt->Items["tagname"]=trim($tmpvalue);
}
$tmpvalue = "";
$notAttribute = false;
break;
}
else
{
$tmpvalue .= $d;
}
}
//不存在属性列表的情况
if($notAttribute)
{
$this->CAtt->Count++;
$this->CAtt->Items["tagname"]= ($this->CharToLow ? strtolower(trim($tmpvalue)) : trim($tmpvalue));
}
//如果字符串含有属性值,遍历源字符串,并获得各属性
if(!$notAttribute)
{
for($i;$i<$strLen;$i++)
{
$d = substr($this->SourceString,$i,1);
if($startdd==-1)
{
if($d!="=")
{
$tmpatt .= $d;
}
else
{
if($this->CharToLow)
{
$tmpatt = strtolower(trim($tmpatt));
}
else
{
$tmpatt = trim($tmpatt);
}
$startdd=0;
}
}
else if($startdd==0)
{
switch($d)
{
case ' ':
continue;
break;
case '\'':
$ddtag='\'';
$startdd=1;
break;
case '"':
$ddtag='"';
$startdd=1;
break;
default:
$tmpvalue.=$d;
$ddtag=' ';
$startdd=1;
break;
}
}
else if($startdd==1)
{
if($d==$ddtag)
{
$this->CAtt->Count++;
$this->CAtt->Items[$tmpatt] = trim($tmpvalue);//strtolower(trim($tmpvalue));
$tmpatt = "";
$tmpvalue = "";
$startdd=-1;
}
else
{
$tmpvalue.=$d;
}
}
}
if($tmpatt!="")
{
$this->CAtt->Count++;
$this->CAtt->Items[$tmpatt]=trim($tmpvalue);//strtolower(trim($tmpvalue));
}//完成属性解析
}//for
}//has Attribute
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -