php过滤html标记属性类用法实例,标记实例
php过滤html标记属性类用法实例,标记实例
本文实例讲述了php 过滤html标记属性类及其用法。是PHP项目开发中比较常见的实用技巧。分享给大家供大家参考。具体方法如下:
HtmlAttributeFilter.class.php类文件如下:
<?php /** HTML Attribute Filter * Date: 2013-09-22 * Author: fdipzone * ver: 1.0 * * Func: * public strip 过滤属性 * public setAllow 设置允许的属性 * public setException 设置特例 * public setIgnore 设置忽略的标记 * private findElements 搜寻需要处理的元素 * private findAttributes 搜寻属性 * private removeAttributes 移除属性 * private isException 判断是否特例 * private createAttributes 创建属性 * private protect 特殊字符转义 */ class HtmlAttributeFilter{ // class start private $_str = ''; // 源字符串 private $_allow = array(); // 允许保留的属性 例如:array('id','class','title') private $_exception = array(); // 特例 例如:array('a'=>array('href','class'),'span'=>array('class')) private $_ignore = array(); // 忽略过滤的标记 例如:array('span','img') /** 处理HTML,过滤不保留的属性 * @param String $str 源字符串 * @return String */ public function strip($str){ $this->_str = $str; if(is_string($this->_str) && strlen($this->_str)>0){ // 判断字符串 $this->_str = strtolower($this->_str); // 转成小写 $res = $this->findElements(); if(is_string($res)){ return $res; } $nodes = $this->findAttributes($res); $this->removeAttributes($nodes); } return $this->_str; } /** 设置允许的属性 * @param Array $param */ public function setAllow($param=array()){ $this->_allow = $param; } /** 设置特例 * @param Array $param */ public function setException($param=array()){ $this->_exception = $param; } /** 设置忽略的标记 * @param Array $param */ public function setIgnore($param=array()){ $this->_ignore = $param; } /** 搜寻需要处理的元素 */ private function findElements(){ $nodes = array(); preg_match_all("/<([^ !\/\>\n]+)([^>]*)>/i", $this->_str, $elements); foreach($elements[1] as $el_key => $element){ if($elements[2][$el_key]){ $literal = $elements[0][$el_key]; $element_name = $elements[1][$el_key]; $attributes = $elements[2][$el_key]; if(is_array($this->_ignore) && !in_array($element_name, $this->_ignore)){ $nodes[] = array('literal'=>$literal, 'name'=>$element_name, 'attributes'=>$attributes); } } } if(!$nodes[0]){ return $this->_str; }else{ return $nodes; } } /** 搜寻属性 * @param Array $nodes 需要处理的元素 */ private function findAttributes($nodes){ foreach($nodes as &$node){ preg_match_all("/([^ =]+)\s*=\s*[\"|']{0,1}([^\"']*)[\"|']{0,1}/i", $node['attributes'], $attributes); if($attributes[1]){ foreach($attributes[1] as $att_key=>$att){ $literal = $attributes[0][$att_key]; $attribute_name = $attributes[1][$att_key]; $value = $attributes[2][$att_key]; $atts[] = array('literal'=>$literal, 'name'=>$attribute_name, 'value'=>$value); } }else{ $node['attributes'] = null; } $node['attributes'] = $atts; unset($atts); } return $nodes; } /** 移除属性 * @param Array $nodes 需要处理的元素 */ private function removeAttributes($nodes){ foreach($nodes as $node){ $node_name = $node['name']; $new_attributes = ''; if(is_array($node['attributes'])){ foreach($node['attributes'] as $attribute){ if((is_array($this->_allow) && in_array($attribute['name'], $this->_allow)) || $this->isException($node_name, $attribute['name'], $this->_exception)){ $new_attributes = $this->createAttributes($new_attributes, $attribute['name'], $attribute['value']); } } } $replacement = ($new_attributes) ? "<$node_name $new_attributes>" : "<$node_name>"; $this->_str = preg_replace('/'.$this->protect($node['literal']).'/', $replacement, $this->_str); } } /** 判断是否特例 * @param String $element_name 元素名 * @param String $attribute_name 属性名 * @param Array $exceptions 允许的特例 * @return boolean */ private function isException($element_name, $attribute_name, $exceptions){ if(array_key_exists($element_name, $this->_exception)){ if(in_array($attribute_name, $this->_exception[$element_name])){ return true; } } return false; } /** 创建属性 * @param String $new_attributes * @param String $name * @param String $value * @return String */ private function createAttributes($new_attributes, $name, $value){ if($new_attributes){ $new_attributes .= " "; } $new_attributes .= "$name=\"$value\""; return $new_attributes; } /** 特殊字符转义 * @param String $str 源字符串 * @return String */ private function protect($str){ $conversions = array( "^" => "\^", "[" => "\[", "." => "\.", "$" => "\$", "{" => "\{", "*" => "\*", "(" => "\(", "\\" => "\\\\", "/" => "\/", "+" => "\+", ")" => "\)", "|" => "\|", "?" => "\?", "<" => "\<", ">" => "\>" ); return strtr($str, $conversions); } } // class end ?>
demo示例代码如下:
<?php require('HtmlAttributeFilter.class.php'); $str = '<div class="bd clearfix" id="index_hilite_ul"><ul class="list"><li><img src="/static/imghw/default1.png" data-src="http://www.bkjia.com/uploads/allimg/140924/010QM026-0.png" class="lazy" style="max-width:90%" style="max-width:90%" alt="php过滤html标记属性类用法实例,标记实例" ><div class="cover"><a class="text" href="http://www.bkjia.com"><strong>yuna</strong><p>love</p></a><strong class="t g">want to know</strong><a href="/login.html" class="ppBtn"><strong class="text">YES</strong></a></div></li></ul></div>'; $obj = new HtmlAttributeFilter(); // 允许id属性 $obj->setAllow(array('id')); $obj->setException(array( 'a' => array('href'), // a 标签允许有 href属性特例 'ul' => array('class') // ul 标签允许有 class属性特例 )); // img 标签忽略,不过滤任何属性 $obj->setIgnore(array('img')); echo 'source str:<br>'; echo htmlspecialchars($str).'<br><br>'; echo 'filter str:<br>'; echo htmlspecialchars($obj->strip($str)); ?>
本文完整源码点击此处本机下载。
希望本文所述对大家的PHP程序设计有所帮助。
$html = strip_tags($html,'');
Description
string strip_tags ( string str [, string allowable_tags] )
This function tries to return a string with all HTML and PHP tags stripped from a given str
楼主 请不要理解成相互嵌套
你需要想一下稍微底层一点的东西
第一,php是解释性语言,是由服务器执行的,就是说,可以理解为,它是用来“生产”html的
第二,html是浏览器分析的,是在客户端执行
根据以上两点,能不能得出结论,php是在html之前就被执行了?
所以,这种“嵌套”关系,对于服务器来说,是不存在的。
服务器只会在意php的部分,然后把html当成无意义的字符流来看待。
好了,具体解释一下
for($i=0;$i?>
第次循环
}
?>
以上这段是不是看着有点头晕?
这样看待,记住,php会在html中显示的部分,全部都是用print或者echo方法打印出的字符串。
譬如
对于php来说,它只会在乎中的程序体,这个for程序体,必须从"{"开始以"}"结束
而上一个和下一个之间的内容,会被php当成字符串看待。
所以“第次循环”和对于php来说,是一个概念。
当然,你可以只使用一个
上面修改如下:
for($i=0;$i echo("第".$i."次循环");
}
?>
这是一种输出方式
还有另外一种
print 第{$i}次循环
EOF;
?>
这种方式注意,"EOF"你可以用任意字符串替换,但必须用同样的字符串结尾,该字符串后必须有";",但,“EOF;”之前,和之后,不能有回车外的任何字符,包括空格。

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











HTML, CSS and JavaScript are the core technologies for building modern web pages: 1. HTML defines the web page structure, 2. CSS is responsible for the appearance of the web page, 3. JavaScript provides web page dynamics and interactivity, and they work together to create a website with a good user experience.

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

The function of HTML is to define the structure and content of a web page, and its purpose is to provide a standardized way to display information. 1) HTML organizes various parts of the web page through tags and attributes, such as titles and paragraphs. 2) It supports the separation of content and performance and improves maintenance efficiency. 3) HTML is extensible, allowing custom tags to enhance SEO.

Configuring and running PHP on IIS requires the following steps: 1) Download and install PHP, 2) Configuring IIS and adding FastCGI module, 3) Create and set up an application pool, 4) Create a website and bind to an application pool. Through these steps, you can easily deploy PHP applications on your Windows server and improve application stability and efficiency by configuring scaling and optimizing performance.

HTML5 brings five key improvements: 1. Semantic tags improve code clarity and SEO effects; 2. Multimedia support simplifies video and audio embedding; 3. Form enhancement simplifies verification; 4. Offline and local storage improves user experience; 5. Canvas and graphics functions enhance the visualization of web pages.
