过滤掉特殊字符,可以考虑使用字符串替换的方法,在php中替换字符效率最高也是最简单字符替换函数str_replace函数。
使用方法:str_replace(find,replace,string,count)
参数说明:
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
实例:
str_replace("iwind", "kiki", "i love iwind, iwind said")将输出 "i love kiki, kiki said"
当然你也可以采取正则替换的方法,该函数是preg_replace
用正则吧,把<>之间的内容过滤掉,或者只取中文并且不是“宋体”看见你给我发的信息了,我一点刷新就没了,你重加一下吧,
复杂点的正则:
<script>
function removeTags(html){
// Remove all SPAN tags
html = html.replace(/<\/?SPAN[^>]*>/gi, "" )
// Remove all p tags
html = html.replace(/<\/?P[^>]*>/gi, "" )
// Remove all <br>tags
html = html.replace(/<\/?BR[^>]*>/gi, "" )
// Remove Class attributes
html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3")
// Remove Style attributes
html = html.replace(/<(\w[^>]*) style="([^"]*)"([^>]*)/gi, "<$1$3")
// Remove Lang attributes
html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3")
// Remove XML elements and declarations
html = html.replace(/<\\?\?xml[^>]*>/gi, "")
// Remove Tags with XML namespace declarations: <o:p></o:p>
html = html.replace(/<\/?\w+:[^>]*>/gi, "")
// Replace the
html = html.replace(/ /, " " )
return html
}
</script>
下面有个简单写法,但有时过滤会出现问题,但你这个应该没没
replace(/<\/?[^>]*>/gi, "" )
package testimport java.util.HashMap
/**
* maxLength-需要过滤最长字符串的长度
* filterStrs<string,string>-需要过滤字符串的集合,key为需要过滤字符串,value为过滤成的字符串如"*"
* @author Administrator
*
*/
public class Test{
private int maxLength
private HashMap<String,String> filterStrs=new HashMap<String,String>()
/**
* 初始化需要过滤掉*的数量
*/
private String initStr(int n){
StringBuffer sb=new StringBuffer()
for(int i=0i<ni++){
sb.append('*')
}
return sb.toString()
}
/**
* str-被过滤得字符串
* s-需要过滤得字符串
* 获得剩下未过滤的字符串
*/
private String getNextStr(String str,int start,int slength){
if(start==0){
str=str.substring(slength)
}else if(start+slength<str.length()){
str=str.substring(start+slength)
}
return str
}
/**
* str-被过滤得字符串
* s-需要过滤得字符串
* 获得过滤后的字符串
*/
private StringBuffer getFilterStr(StringBuffer sb,String str,int start,String s){
if(start!=0){
sb.append(str.substring(0,start))
}
sb.append(filterStrs.get(s))
return sb
}
/**
* str-被过滤的字符串
* 过滤,并组合过滤后的字符串
*/
public String filter(String str) {
StringBuffer resultStr=new StringBuffer()
for(int start=0start<str.length()start++){
for(int end=start+1end<=str.length()&&end<=start+maxLengthend++){
String s=str.substring(start, end)
int slength=s.length()
if(filterStrs.containsKey(s)){
resultStr=getFilterStr(resultStr,str,start,s)
str=getNextStr(str,start,slength)
start=0
end=start
}
}
}
resultStr.append(str)
return resultStr.toString()
}
public void put(String key) {
int keyLength=key.length()
filterStrs.put(key, initStr(keyLength))
if(keyLength>this.maxLength)
maxLength=keyLength
}
public static void main(String[] agrs){
Test t=new Test()
t.put("TMD")
t.put("TNND")
t.put("NND")
System.out.println(t.filter("TMD,TNND..TMDTMDTMDTMD.tTNND TMDTNNDTNNDTNND"))
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)