php清除html中超链接/JS脚本/回车

 更新时间:2016年11月25日 17:25  点击:2378
在php中要过滤一些特殊字符或非法字符我们可以有很多的办法,像正则表达式str_replace就是一个不错的办法,像回车,空格,换行都可以用它来解决。

近负责的一个系统模块终于可以说是接近尾声了,余下的工作就是配合测试们测试和修改了。

趁着这个相对比较闲的时间里,偷偷写几篇博文记录下这个时间段遇到的问题和我的解决方案(还是说解决方法吧)。

 好了,废话不多说,进入正题。

    有这种需求的一般都是去小偷程序那些,像去掉原页面的链接什么的。不过,我遇到的是要导出制定页面到word,安全起见需要去掉js代码块。

    先上代码

 代码如下 复制代码

   

    $searchRegex = array(
    '/<as*.*?s*>(s*.*?s*)</a>/i', // 超链接
    '/<scripts*.*?s*>[sS]*?</script>/i', // JS脚本代码
    );
    $replaceStr = array(
    '$1',
    ''
    );
    $content = preg_replace($searchRegex, $replaceStr, $content);


php的话这个就比较简单了,就是使用了preg_replace这个函数啦,不多说。。。需要注意的是两个正则吧,这个才是关键。

 代码如下 复制代码

    $regexForLink = '/<as*.*?s*>(s*.*?s*)</a>/i'; // 超链接
    $regexForJS = '/<scripts*.*?s*>[sS]*?</script>/i'; // JS脚本代码

如果要过滤HTML代码、空格、回车换行符

 代码如下 复制代码


function DeleteHtml($str)
{
$str = trim($str);
$str = strip_tags($str,"");
$str = ereg_replace("t","",$str);
$str = ereg_replace("rn","",$str);
$str = ereg_replace("r","",$str);
$str = ereg_replace("n","",$str);
$str = ereg_replace(" "," ",$str);
return trim($str);
}


过滤html中所有html标签可以使用strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。

strip_tags(string,allow)

好了,就这么多,希望下一次有帮助吧。

汉字中文使用php自带函数截取有时会碰到有问号了,下面我们整理了几个非常不错的汉字中文精确截取实例。

php在操作字符串的问题时间无非两个问题:
1.判断字符串编码是gbk还是unicode。
2.对相应编码采取相应截取方法。

一般情况下我们使用substr截取汉字可能会遇到乱码问题。因为汉字是双字节的,当被截取了一个字节时,这个汉字就无法显示,乱掉了。

其实解决很简单,看下面的截取函数:

 代码如下 复制代码

//截取超长字符串
function curtStr($str,$len=30){
 if(strlen($str)>$len){
  $str = substr($str,0,$len);
  $str .= chr(0) ."…";
 return $str;
}

上面的chr(0)不是null
null是什么都没有,而chr(0)的值是0。表示成16进制是0×00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0×81到0xff与0×00组合始终都显示为“空”
根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了

下面补充几个函数即可实现此两点以达到精确截取中文字符串的目的:

截取utf8编码的多字节字符串

 代码如下 复制代码

   <?php  
   //截取utf8字符串  
   function utf8Substr($str, $from, $len)  
   {  
      return preg_replace('#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$from.'}'.  
                         '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$len.'}).*#s',  
                         '$1',$str);  
   }  
   ?>

UTF-8、GB2312都支持的汉字截取函数

 代码如下 复制代码
 <?php  
    /*  
    Utf-8、gb2312都支持的汉字截取函数  
    cut_str(字符串, 截取长度, 开始长度, 编码);  
    编码默认为 utf-8  
    开始长度默认为 0  
    */   
 
    function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')   
   {   
      if($code == 'UTF-8')   
      {   
          $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";   
          preg_match_all($pa, $string, $t_string);   
 
          if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";   
          return join('', array_slice($t_string[0], $start, $sublen));   
      }   
      else   
      {   
          $start = $start*2;   
          $sublen = $sublen*2;   
          $strlen = strlen($string);   
          $tmpstr = '';   
 
         for($i=0; $i<$strlen; $i++)   
          {   
              if($i>=$start && $i<($start+$sublen))   
              {   
                  if(ord(substr($string, $i, 1))>129)   
                  {   
                      $tmpstr.= substr($string, $i, 2);   
                  }   
                  else   
                  {   
                      $tmpstr.= substr($string, $i, 1);   
                  }   
              }   
              if(ord(substr($string, $i, 1))>129) $i++;   
          }   
          if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";   
          return $tmpstr;   
      }   
   }   
 
   $str = "abcd需要截取的字符串";   
   echo cut_str($str, 8, 0, 'gb2312');   
   ?>
mysql服务器中mysql与information_schema数据库是系统数据库了,这个对于我们来讲几乎没什么多大的用处,但我们是不能删除他们的他们是关键的,那么要如何隐藏mysql与information_schema数据库呢,下面我们一起来看看隐藏它们的方法。

本文收集内容:

• phpMyAdmin隐藏多个数据库(information_schema|mysql|test)
• phpMyAdmin禁止/不允许用户修改密码

phpMyAdmin隐藏多个数据库 information_schema|mysql|test

编辑/libraries/config.default.php

隐藏单个数据库:

 代码如下 复制代码

$cfg['Servers'][$i]['hide_db'] = 'information_schema'

隐藏多个数据库:

 代码如下 复制代码

$cfg['Servers'][$i]['hide_db'] = '(information_schema|mysql|test)'

#如果想要隐藏全部以hf开头的数据库,可以使用'^hf',如果想隐藏一个列表,可以使
用'(database|database|...)'的形式

#补充:3.3.3以上版本

phpMyAdmin禁止/不允许用户修改密码

 代码如下 复制代码

$cfg['ShowChgPassword'] = false;

遍历目录下文件名并显示我们会用到几个函数一个是opendir目录读取函数,然后再利用readdir获取目录相在信息到数组然后通过while遍历出来。

显示目录下所有文件

 代码如下 复制代码

<?php

$dir=dirname(__FILE__)."/../www.111cn.net /";//这里输入其它路径
//PHP遍历文件夹下所有文件
$handle=opendir($dir.".");
//定义用于存储文件名的数组
$array_file = array();
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$array_file[] = $file; //输出文件名
}
}
closedir($handle);
print_r($array_file);

?>


删除指定目录下的所有文件

 代码如下 复制代码


/**
 * 删除指定目录下的所有文件
 *
 * @param String $dir  要进行操作的路径
 * 适合范围,只有用于文件夹内不存在子文件夹的情况下
 * 来源  DZ
 * 小佳(www.111cn.net)  整理 于 2006-06-26 
 */
function dir_clear($dir) {
    $directory = dir($dir);                //创建一个dir类(111cn.net的PHP手册上这么说的),用来读取目录中的每一个文件
    while($entry = $directory->read()) {   //循环每一个文件,并取得文件名$entry
        $filename = $dir.'/'.$entry;       //取得完整的文件名,带路径的
        if(is_file($filename)) {           //如果是文件,则执行删除操作
            @unlink($filename);
        }
    }
    $directory->close();                   //关闭读取目录文件的类
    result();
}  

在php中字符串中指定位置的字符替换为星号我们有很我函数可以实现如有substr,preg_replace,substr_replace等下面我分别给这三个函数分别介绍一个实例,主要讲到电话,身份证.

手机号码字符串替换为星号代码:

 代码如下 复制代码

<?php
$str = "15832818835";
echo substr($str,0,3).'*****'.substr($str,8,strlen($str));//保留前三位和后三位
?>

或用正则

<?php
$s='www.111cn.net的王经理:13999312365 李经理:13588958741';
$s=preg_replace('#(d{3})d{5}(d{3})#', '${1}*****${2}', $s);
echo $s;
//王经理:139*****365 李经理:135*****741
?>


替换字符串中间位置字符为星号

 代码如下 复制代码

function half_replace($str){ 
   $len = strlen($str)/2; 
    return substr_replace($str,str_repeat('*',$len),ceil(($len)/2),$len); 

 
echo half_replace('test'),"n",half_replace('tests'),"n",half_replace('exceptions');

PHP身份证号打星号

 代码如下 复制代码

echo strlen($idcard)==15?substr_replace($idcard,"****",8,4):(strlen($idcard)==18?substr_replace($idcard,"****",10,4):"111cn.net提示身份证位数不正常!");

[!--infotagslink--]

相关文章

  • @CacheEvict 清除多个key的实现方式

    这篇文章主要介绍了@CacheEvict 清除多个key的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-13
  • IDEA中的clean,清除项目缓存图文教程

    这篇文章主要介绍了IDEA中的clean,清除项目缓存图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25
  • jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果

    本文实例讲述了jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果。分享给大家供大家参考,具体如下:这里演示jQuery实现鼠标移动到链接上,滑动展开/隐藏图片效果,鼠标放在“上一页”“下一页”上,立即浮现出所对应的图...2015-10-30
  • Vue如何优雅的清除定时器

    定时器如果不及时合理地清除,会造成业务逻辑混乱甚至应用卡死的情况,这个时就需要清除定时器,本文就介绍了Vue如何优雅的清除定时器,感兴趣的可以了解一下...2021-07-22
  • 如何获取百度搜索结果页中解密之后的真实链接

    大家用百度搜索的时候,可能会发现,结果链接用的还是百度的链接,点击之后才会跳转到另外一个页面,另外一个页面的真实链接如何获取到呢?? 通过分析发现: 可以看出,返回...2016-05-19
  • ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容

    这篇文章主要介绍了ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容的实现代码,感兴趣的小伙伴们可以参考一下...2021-09-22
  • python docx的超链接网址和链接文本操作

    这篇文章主要介绍了python docx的超链接网址和链接文本操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-06
  • JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法

    多网站的需要填写的文本框在默认状态下都会给出一个默认的提示语言,当鼠标点击此文本框的时候能够将里面的默认文本清除,当删除输入的文本且焦点离开文本框的时候再将默认的文本写入文本框...2016-01-14
  • Python 实现自动获取种子磁力链接方式

    今天小编就为大家分享一篇Python 实现自动获取种子磁力链接方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • C++静态链接与动态链接详解

    下面小编就为大家介绍C++静态链接与动态链接。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-10-11
  • 浅谈CMake配置OpenCV 时静态链接与动态链接的选择

    下面小编就为大家带来一篇浅谈CMake配置OpenCV 时静态链接与动态链接的选择。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • 怎么清除sql server日志

    方法1: 第一步: backup log database_name with no_log 或者 backup log database_name with truncate_only --no_log和truncate_only是在这里是同义的,随便执行哪一句...2016-11-25
  • C++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值

    这二个代码一个是获取文件哈希值的,另外一个是获取torrent文件磁力链接的哈希值...2020-04-25
  • CSS不得不掌握的技巧【清除float浮动】

    本文我们来讲讲CSS必备掌握的重点:清除float浮动clear,掌握此内容,可以让你在css+div布局中,一些浮动问题得心应手。 一、浮动产生原因 一般浮动是什么情况呢?一般是...2016-09-14
  • dotnet core链接mongodb代码实例

    这篇文章主要介绍了dotnet core链接mongodb代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-25
  • php清除html中超链接/JS脚本/回车

    在php中要过滤一些特殊字符或非法字符我们可以有很多的办法,像正则表达式str_replace就是一个不错的办法,像回车,空格,换行都可以用它来解决。 近负责的一个系统模块...2016-11-25
  • 清除aspx页面缓存的程序实现方法

    这篇文章主要介绍了清除aspx页面缓存的程序实现方法,非常实用,需要的朋友可以参考下...2020-06-25
  • 网站中制作友情链接的一些小技巧

      帮你的页面瘦身   我们浏览网页实际上是将虚拟主机中的网页内容下载到本地硬盘,再用浏览器解释查看的。下载网页的快慢在显示速度上占了很大比重,所以,网页...2016-09-20
  • php正则链接-取得内容所有链接

    下面提供二款关于php正则链接方法,他们可以-取得内容所有链接并且保存到一个数组,当然也可以把链接全部替换哦。 方法一 代码如下 ...2016-11-25
  • WordPress中获取页面链接和标题的相关PHP函数用法解析

    这篇文章主要介绍了WordPress中获取页面链接和标题的相关PHP函数用法解析,分别为get_permalink()和wp_title()函数的使用,需要的朋友可以参考下...2015-12-21