给whygod,如何过滤高亮显示非法字符!

 更新时间:2016年11月25日 17:36  点击:1721
<?
//我只是做一个测试,如果再用类似tmd的字符串,一定要注意,如果字符串中的字符出现在$StartReplaceHtml或者$EndReplaceHtml中,你需要修改下面的preg_replace中的规则
$CheckedMessage="Hello!!他X的..他....X...的....How are you m d ";     //the message to be checked
echo $CheckedMessage."<br>";
$CheckedWords=array("他X的","tmd");//要过滤的非法字符,如果你需要把单个的字符也过滤,比如:他ererX000的过滤出来他,X,的,你就没必要把过滤字符设置成"他X的"只要设置成$CheckedWords=array("他","X","的");就可以了
$StartReplaceHtml="<u><b><font color='#FF0000'>";
$EndReplaceHtml="</font></b></u>";
$CheckOther= true;//设置标示位,是否显示单个的字符,如果设置成true,下面的if(strstr……)就不需要了
for($i=0;$i<count($CheckedWords);$i++){
     if(strstr($CheckedMessage,$CheckedWords[$i])){ //此处可去掉
    $CheckedMessage=eregi_replace($CheckedWords[$i],$StartReplaceHtml.$CheckedWords[$i].$EndReplaceHtml,$CheckedMessage);//如果只过滤诸如"他X的"字符串(是字符串,不是单个字符),可以直接写这句,同时把$CheckOther设置成false
     }
     if($CheckOther == true){
    $CharStringLength = strlen($CheckedWords[$i]);
    for($j=0;$j<$CharStringLength;$j++){
        $AssumeLength=1;//假定截取长度
        if(ord(substr($CheckedWords[$i],$j,$AssumeLength))>0xa0){//如果汉字,假定长度加一
           $AssumeLength++;    
        }
        $SubstrChar = substr($CheckedWords[$i],$j,$AssumeLength);        
<?
class timer {    
    var $StartTime = 0;    
    var $StopTime = 0;    
    var $TimeSpent = 0;    
    function start(){    
        $this->StartTime = microtime();    
    }    
    function stop(){    
        $this->StopTime    = microtime();    
    }    
    function spent() {    
        if ($this->TimeSpent) {    
       return $this->TimeSpent;    
        } else {    
       $StartMicro = substr($this->StartTime,0,10);    
       $StartSecond = substr($this->StartTime,11,10);    
       $StopMicro    = substr($this->StopTime,0,10);    
       $StopSecond    = substr($this->StopTime,11,10);    
       $start = doubleval($StartMicro) + $StartSecond;    
       $stop    = doubleval($StopMicro) + $StopSecond;    
       $this->TimeSpent = $stop - $start;    
<?
/*
GetFileType
用法:GetFiletype($filename)
*/
function GetFiletype($Filename) {
    if (substr_count($Filename, ".") == 0) {        // 检查文件名中是否有.号。
        return;           // 返回空
    } else if (substr($Filename, -1) == ".") {        // 检查是否以.结尾,即无扩展名
        return;           // 返回空
    } else {
        $FileType = strrchr ($Filename, ".");    // 从.号处切割
        $FileType = substr($FileType, 1);    // 去除.号
        return $FileType;       // 返回
    }
}
$Filename = "Testfilename.php4";
$Filename = GetFileType($Filename);
echo $Filename;       //  打印出php4
?>

服务器
<?php
// Server
// 设置错误处理
error_reporting (E_ALL);
// 设置运行时间
set_time_limit (0);
// 起用缓冲
ob_implicit_flush ();
$ip = "127.0.0.1";        // IP地址
$port = 1000;        // 端口号
$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);    // 创建一个SOCKET
if ($socket)
    echo "socket_create() successed! ";
else
    echo "socket_create() failed:".socket_strerror ($socket)." ";
$bind = socket_bind ($socket, $ip, $port);           // 绑定一个SOCKET
if ($bind)
    echo "socket_bind() successed! ";
else
    echo "socket_bind() failed:".socket_strerror ($bind)." ";
$listen = socket_listen ($socket);            // 间听SOCKET
if ($listen)
    echo "socket_listen() successed! ";
else
    echo "socket_listen() failed:".socket_strerror ($listen)." ";
while (true)
{
    $msg = socket_accept ($socket);            // 接受一个SOCKET
    if (!$msg)
    {
        echo "socket_accept() failed:".socket_strerror ($msg)." ";
        break;
    }
    $welcome = "Welcome to PHP Server! ";
    socket_write ($msg, $welcome, strlen ($welcome));
    while (true)
1.简易判断ip地址合法性
2.email的正则判断
3.检测ip地址和mask是否合法的例子
4.关于表单刷新
5.关于表单刷新
1.简易判断ip地址合法性
if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip)) echo "is ipn";
----
2.email的正则判断
eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+.)+[a-zA-Z]$", $email);
----
3.检测ip地址和mask是否合法的例子
$ip = '192.168.0.84';
$mask = '255.255.255.0';
$network = '192.168.0';
$ip = ip2long($ip);
$mask = ip2long($mask);
$network = ip2long($network);
if( ($ip & $mask) == $network) echo "valid ip and maskn";
?>
----
4.今天解决了一个巨郁闷的问题
ipb的添加用户页面toadduser.php似乎会重复提交,导致在添加新用户的时候总是报该用户已经存在...已经郁闷了我3天了,终于搞定,大快人心!
----
5.关于表单刷新
问:为什么我在点击浏览器的后退按钮后,所有字段的信息都被清空了?
答:这是由于你在你的表单提交页面中使用了 session_start 函数。该函数会强制当前页面不被缓存。解决办法为,在你的 Session_start 函数后加入 header("Cache-control: private"); 注意在本行之前你的PHP程序不能有任何输出。
补充:还有基于session的解决方法,在session_start前加上
session_cache_limiter('nocache');// 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般
可以在session_start();前加上 session_cache_limiter("private,max-age=10800");
摘自phpe.net
----
6.快速搞定文件下载头部输出
header("Content-type: application/x-download");
header("Content-Disposition: attachment; filename=$file_download_name;");
header("Accept-Ranges: bytes");
header("Content-Length: $download_size");
echo 'xxx'
.......2004-08-19 11:50:30
----
7.用header输出ftp下载方式,并且支持断点续传
一个例子:
header('Pragma: public');
header('Cache-Control: private');
header('Cache-Control: no-cache, must-revalidate');
header('Accept-Ranges: bytes');
[!--infotagslink--]

相关文章