LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1859|回复: 6

贴一个html string处理的类

[复制链接]
发表于 2004-7-2 17:13:29 | 显示全部楼层 |阅读模式
[PHP]

package com.ljsilver.util;

import java.util.*;
import net.acai.filter.*;
import net.acai.util.*;

public class HTMLString{
       
        public HTMLString(){}
        //从数据库取出字符串之后进行UBB转换和HTML编码然后再显示
        public static String HTMLUBB(String str){
                return (new MyFilter(StringUtils.replace(StringUtils.convertNewlines(StringUtils.escapeHTMLTags(str)), " ", " "))).getFilterString();       
        }
        //从数据库取出字符串之后进行html编码然后再显示
        public static String HTMLEntitle(String str){
                fString = repstr(fString, "&","&",
                fString = repstr(fString, "´","'");
                fString = repstr(fString, ""","\"");
                fString = repstr(fString, "&lt;","<");
                fString = repstr(fString, "&gt;",">");
                fString = repstr(fString, "&nbsp;"," ");
                fString = repstr(fString, "<br>","\n");
                return (fString);       
        }
        //从页面的textarea取字符串时将各种系统的换行符都转换成'\n'
        public static HTMLBR(String str){
                fString = repstr(fString, "\n ","\r\n");
                fString = repstr(fString, "\n ","\r");
        }

        //判断是否合法的用户名字符串
        public static boolean isUserNameString(String str){
                if(str!=null&&str.length()>=6&&str.length()<=20&&str.matches("[0-9a-zA-Z[-_.]]")){
                        return true;
                }else{
                        return false;
                }
        }
        //判断是否合法的密码字符串
        public static boolean isPassWordString(String str){
                if(str!=null&&str.length()>=6&&str.length()<=20){
                        return true;
                }else{
                        return false;
                }
        }
        //字符串替换
        public static String repstr(String str, String strDen, String strSrc){       
                int iLen = str.length();               
                int iDenLen = strDen.length();       
                int iSrcLen = strSrc.length();       
                String strReturn = "";               
                int iSearchedFrom = 0 ;               
                int iPrevSearchedFrom = 0;        
                while ( (iSearchedFrom = str.indexOf(strSrc , iSearchedFrom)) != -1 ){       
                        strReturn += str.substring(iPrevSearchedFrom, iSearchedFrom);               
                        strReturn += strDen;               
                        iSearchedFrom += iSrcLen;       
                        iPrevSearchedFrom = iSearchedFrom;               
                }                
                if ( iPrevSearchedFrom !=0 )
                        strReturn += str.substring( str.lastIndexOf(strSrc) + iSrcLen   , str.length());
                else                       
                        strReturn = str;                
                return(strReturn);       
        }       
}



[/PHP]
 楼主| 发表于 2004-7-2 17:17:44 | 显示全部楼层
顺便问一下password一般matches哪些字符?
发表于 2004-7-2 19:36:32 | 显示全部楼层
不能用 = ' %空格 等。。。如果没有加密,,,懂一点sql就可以随意登录。。
数字字母下?线。。
发表于 2004-7-2 19:41:55 | 显示全部楼层
还有你的正则表达式有问题。。。
换行有问题,,,win为\r\n,mac 为\r,*nix为\n....
而且字符替换,,,jdk的已经很好用。。。而且支持正则表达式。。。
此类工具还是看jakatar commons吧。。。。
 楼主| 发表于 2004-7-2 21:25:41 | 显示全部楼层
换行有问题,,,win为\r\n,mac 为\r,*nix为\n....



考虑了这个问题。提交的时候把各类操作系统的换行符都替换成\n,放回textarea的时候都可以兼容,ie也认\n.
显示的时候再替换成带html标记的字符串
 楼主| 发表于 2004-7-2 21:51:45 | 显示全部楼层
数据库用的是mysql,密码用password()函数加密。

正则表达式应该是:
str.matches("[0-9a-zA-Z\._-]{6,20}")
请问是这样吗?初学正则表达式,还不太会。
发表于 2004-7-3 13:55:45 | 显示全部楼层
java正则表达式和perl有出入,,,,请参考api...java.util.regex.Pattern....
一般规定:字母数字开头,包括字母数字下划线。。。
^([a-zA-Z0-9])([a-zA-Z0-9_]){6,20}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表