php过滤所有html标签的几种方法

 更新时间:2016年11月25日 15:55  点击:2120

//用正则过滤html标签

 代码如下 复制代码
$html_body ="<a href='#'>www.111cn.net</a>";
preg_replace("/(</?)(w+)([^>]*>)/e",
             "'\1'.strtoupper('\2').'\3'",
             $html_body);


   
//用php教程自带函数strip_tags

 代码如下 复制代码
echo strip_tags("hello <b>world!www.111cn.net</b>");

//用户自定义

 代码如下 复制代码
function filterhtml($str) {
        $str=eregi_replace("</*[^<>]*>", '', $str);
        $str=str_replace(" ", '', $str);
        $str=str_replace(" ", '', $str);
        $str=str_replace(" ", '', $str);
        $str=str_replace("::", ':', $str);
        $str=str_replace(" ", '', $str);
   //$str=str_replace("&nbsp;", '', $str);
        return $str;
}

//其它可能对你有用的方法

1,过滤所有html标签的正则表达式:

 代码如下 复制代码
</?[^>]+>

2,过滤所有html标签的属性的正则表达式:

 代码如下 复制代码
$html = preg_replace("/<([a-za-z]+)[^>]*>/","<\1>",$html);

3,过滤部分html标签的正则表达式的排除式(比如排除<p>,即不过滤<p>):

 代码如下 复制代码
</?[^pp/>]+>

4,过滤部分html标签的正则表达式的枚举式(比如需要过滤<a><p><b>等):

 代码如下 复制代码
</?[aappbb][^>]*>

5,过滤部分html标签的属性的正则表达式的排除式(比如排除alt属性,即不过滤alt属性):

 代码如下 复制代码
s(?!alt)[a-za-z]+=[^s]*

6,过滤部分html标签的属性的正则表达式的枚举式(比如alt属性):

 代码如下 复制代码
(s)alt=[^s]*

 

//string ereg_replace ( string $pattern , string $replacement , string $string )
/*
修改后的字符串返回。如果没有找到匹配的字符串,那么将返回不变
*/

//实例

 代码如下 复制代码
$string = "this 111cn.net a test";
echo str_replace(" 111cn.net", " was", $string);
echo ereg_replace("( )111cn.net", "\1was", $string);
echo ereg_replace("(( )111cn.net)", "\2was", $string);

/*
有一点要注意的是,如果你使用一个整数参数值作为替代,您可能不会得到你期望的结果。这是因为ereg_replace()将解释为一个字符值序数,并套用。例如
*/

 代码如下 复制代码

$num = 4;
$string = "this string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* output: 'this string has   words.' */

/* this will work. */
$num = '4';
$string = "this string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* output: 'this string has 4 words.' */

//来看一个用ereg_replace获取连接代码

 代码如下 复制代码
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
                     "<a href="\0">\0</a>", $text);


//取字符串中一部份

 代码如下 复制代码
$output = ereg_replace("your regexp here", "<font color=red>\0</font>", $input) ;
print $output;

//再来看一个更复杂的实例

 代码如下 复制代码
function strip_urls($text, $reppat)
{
    if(!$reppat){
        $reppat = "text [url]";
    }
    $aimps教程tr = 'php教程_strip_urls_function_by_real-php-geek';
    //change $aimps教程tr to anything you want.
    $impstr = md5($aimpstr);
    $text = str_replace('</a>', '</a>' . $impstr, $text);
    $text = explode($impstr, $text);
    $n = 0;
    $texta = array();
    $reppat = str_ireplace(array('text', 'url'), array('\4', '\2'), $reppat);
    foreach ($text as $text) {
        $texta[$n] = ereg_replace("<a(.*)href="(.*)"(.*)>(.*)</a>", $reppat, $text);
        $n++;
    }
    $textb = implode("</a>", $texta);
    return $textb;
}

//examples:

 代码如下 复制代码
$string_of_text = '<a href="http://www.111cn.net/">php</a> rocks. <a href="http://www.111cn.net/">网页制作教程教程</a> also!';
echo strip_urls($string_of_text, "text");
echo strip_urls($string_of_text, "url");
echo strip_urls($string_of_text, "text [url]");
echo strip_urls($string_of_text, null);

/*
说明:
在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。

replacement 可以包含 \n 形式或(自 php 4.0.4 起)$n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中 \0 或 $0 指的是被整个模式所匹配的文本。对左圆括号从左到右计数(从 1 开始)以取得子模式的数目。

对替换模式在一个逆向引用后面紧接着一个数字时(即:紧接在一个匹配的模式后面的数字),不能使用熟悉的 \1 符号来表示逆向引用。举例说 \11,将会使 preg_replace() 搞不清楚是想要一个 \1 的逆向引用后面跟着一个数字 1 还是一个 \11 的逆向引用。本例中的解决方法是使用 ${1}1。这会形成一个隔离的 $1 逆向引用,而使另一个 1 只是单纯的文字。

*/

 

//方法一

 代码如下 复制代码
preg_match_all('/<(a|a)[s]{0,1}[w=":()]*>[ ]*(check user)[ ]*</(a|a)>/i',$string,$matches);

//方法二

 代码如下 复制代码

preg_match_all('/<a[dd]*>check user</a>/i',$string,$matches);

print_r($matches[0]);

//方法三

 代码如下 复制代码

preg_match_all('/<a[^>]*>[^<]*</a>/i',$string,$matches);

print_r($matches[0]);

//方法四

 代码如下 复制代码
preg_match_all('/<a.+?>check user</a>/is',$str,$arr);


//方法五

 代码如下 复制代码

preg_match_all('/<a.+?>check user</a>/is',$str,$arr);

//php教程 curl实例

 代码如下 复制代码

session_write_close();

$pageurl = "http://www.111cn.net/index.html";
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt ($ch, curlopt_url, $pageurl );
$html = curl_exec ( $ch );
curl_close($ch);

//then you need to fix pathing to absolute
$search = "/(src|href|background)="[^:,^>,^"]*"/i";

preg_match_all ( $search, $html, $a_matches );

//php fopen实例

 代码如下 复制代码

$file = fopen("http://www.111cn.net/","r"); //读取远程文件

$file = fopen("a.txt","r");//读取本地文件

//php file_get_contents

$homepage = file_get_contents('http://www.111cn.net/'); //读取远程文本
echo $homepage;

 代码如下 复制代码
// <= php 5
$file = file_get_contents('./people.txt', true);
// > php 5
$file = file_get_contents('./people.txt', file_use_include_path); //打开本地文本

 

//count.php

 代码如下 复制代码

$aid  = isset( $_GET['aid'] )?$_GET['aid']:'';
$t = isset( $_GET['t'] )?$_GET['t']:'';
if( intval( $aid ) )
{
 if( $t =='show' )
 {
  echo "document.write('120');";
 }
 else
 {
  $conn = mysql教程_connect('www.111cn.net','root','root') ;  
  $sql = "Update test set click_num = click_num+1 where aid ='$aid'";
  mysql_db_query('db',$sql,$conn);
 }
}

?>


html代码

 代码如下 复制代码
<script language="javascript教程" src="count.php?aid=5&t=show"></script> 显示浏览次数
<script language="javascript" src="count.php?aid=5"></script> 增加浏览次数

我们只要把这段代码放到html页面,再把当前html 页面的id给aid就行了,这样你的静态页面的访问次数你也可以把握知道了哦。

本文章原创于www.111cn.net转载注明出处

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • C#方法的总结详解

    本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23