B/S项目阶段小总结

    最近在做一个B/S的小项目,由于是第一次个人接触这个类型的,过程中难免磕磕绊绊,做个阶段总结,将一些基础的知识点归纳一下。

一. HTML部分


1. HTML网页基本格式

<!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 http-equiv="Content-Type" content="text/html; charset=utf-8" />	
	<link rel="stylesheet" type="text/css" href="mystyle.css" />				<!--引入css样式文件-->
	<script src="js/add_ajax.js" type="text/javascript" charset="UTF-8"></script>		<!--引入js文件-->
	<link rel="shortcut icon" type="image/x-icon" href="img/izhongyi.ico" media="screen" />	<!--设置图标-->
	<title></title>

	<script type="text/javascript">
		// code
	</script>
</head>

<body>
	<!-- code-->
</body>
</html>

2. 设置body紧贴页面的左边和上边

<body style="margin-top:0px;margin-left:0px">
</body>

3. table单元格间无缝拼接

<table cellpadding="0px" cellspacing="0px"></table>
table本身是有单元格间距与内边距的,如果使各单元格无缝拼接,需手动设置cellpadding属性和cellspacing属性。

4. 当鼠标离开控件焦点时触发事件

<input type="text" οnblur="fun1()">


5. 设置div固定在界面中不随界面滚动而移动

<style type="text/css">
.optwnd
{
	padding:5px;
	position:fixed;
	_position:absolute;
	top:10%;
	right:50px;
	_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}
</style>

<div class="optwnd">
</div>

其中带前下划线的是在IE6下做的特殊处理

6. 表中行的有关操作

<script type="text/javascript">
function fun(obj)	// obj为表中单元格中的控件,可以通过fun(this)调用此函数
{
    var objTable = document.getElementById('cmtb');	// cmtb为table的id
    var rowsNum = objTable.rows.length;                 // 表中行数

    var row = obj.parentNode.parentNode;	        // 获取控件所在行
    var index = row.rowIndex;				// 获取行索引
    objTable.deleteRow(index);		                // 删除该行

}
</script>

7. 利用childNodes遍历表中元素

设objtb表示取到的table,objtb.rows.length 取的是表的行数
        objtb.childNodes[0]    取到表
        objtb.childNodes[0].childNodes[i]    取到行
        objtb.childNodes[0].childNodes[i].childNodes[j]    取到列
        objtb.childNodes[0].childNodes[i].childNodes[j].childNodes[k]    取到列里面的控件

补充:从里往外取的话 obj.parentNode.parentNode


推荐方式:

objtb.rows.length    获取表中的行数

objtb.rows[i].cells.length   获取第(i+1)行的列数

objtb.rows[i].cells[j].childNodes.length    获取第(i+1)行,第(j+1)列中的控件个数

objtb.rows[i].cells[j].childNodes[k]  通过索引定位到某个控件


8. 去掉li样式前面的小点

style="list-style-type:none;"


9. <img>外套一层<a>后图片周围会有篮框


这是因为图片有超链接(即img标签外有a标签),图片链接的蓝框和文字链接的下划线含义相似。

解决方法:

<img src="img/aa.jpg" border=none>


10. 不使用超链接,鼠标移到图片上变成手型

<img style="cursor:hand" src="URL">

二. javascript部分

1. 在新标签页中打开网页

window.open('abc.php');

2. 设置html标签的class属性

取到标签ID,然后 .setAttribute("class", 定义的class名称);

3. 页面加载时用js数组值循环为select控件赋值

<script type="text/javascript">
    onload = function()
    {
	var arr = new Array("AA","BB","CC");
	for (var x in arr)
	{
	    document.getElementById("selid").options.add(new Option(arr[x],arr[x]));
    	}
    }
</script>
补充:① new Option中Option的首字母要大写
            ② new Option(para1,para2)中para1表示界面显示的文本,para2表示实际值

4. 邮箱格式验证

function isEmail(str)
{
    var emailstr = str;
    var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
    if (reg.test(emailstr) != true)
    {
    	alert(邮箱格式不正确);
    }
}

5. 身份证号码验证

function verifyIdNumber(str)
{
	var verifyObj = new verifyAlgorithm();
	var idnumber = str;
	verifyObj.init(idnumber);
	var ret = verifyObj.verify();
	if (ret != true)
	{
		alert(ret);
	}
}

var verifyAlgorithm = function()
{
	var idNumber = '';     
	var _generateValidateCode = function( cardNumber )
	{
		var arrVerifyCode = [ 1 , 0 , "x" , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 ];
		var Wi = [ 7 , 9 , 10 , 5 , 8 , 4 , 2 , 1 , 6 , 3 , 7 , 9 , 10 , 5 , 8 , 4 , 2 ];
		for( var i = 0 , ret = 0 ; i < 17 ; i++ )
		{
			ret += cardNumber.charAt( i ) * Wi[i];
		}
		return arrVerifyCode[ret % 11];
	};
	var _convertID2Eighteen = function( cardNumber )
	{
		return cardNumber.slice( 0 , 6 ) + "19" + cardNumber.slice( 6 , 16 )
			+ _generateValidateCode( cardNumber.slice( 0 , 6 ) + "19" + cardNumber.slice( 6 , 16 ) );
	};
	this.init = function(personId)
	{
		this.idNumber = personId.length == 15 ? _convertID2Eighteen( personId ) : personId;
		this.idNumber = this.idNumber.toLowerCase();
	};

	this.verify = function()
	{
		if( this.idNumber.length != 15 && this.idNumber.length != 18)
		{
			return "身份证号共有 15位或18位";
		}

		if( !/^\d+$/.test( this._getSeventeenNumber() ) )
		{
			return "身份证除最后一位外,必须为数字!";
		}

		if( this._getDateObject().getFullYear() != this._getYear()
			|| this._getDateObject().getMonth() != this._getMonth() - 1
			|| this._getDateObject().getDate() != this._getDay()
			|| this._getDateObject() > ( new Date() ) )
		{
			return "身份证输入日期错误!";
		}

		if( this._getValidateCode() != _generateValidateCode( this.idNumber ) )
		{
			return "身份证验证码错误";
		}
		return true;
	};

	this._getYear = function()
	{
		return this.idNumber.slice( 6 , 10 );
	}

	this._getMonth = function()
	{
		return this.idNumber.slice( 10 , 12 );
	}

	this._getDay = function()
	{
		return this.idNumber.slice( 12 , 14 );
	}

	this._getDateObject = function()
	{
		return new Date( this._getYear() , this._getMonth() - 1 , this._getDay() );
	}

	this._getSeventeenNumber = function()
	{
		return this.idNumber.substring( 0 , 17 );
	};

	this._getValidateCode = function()
	{
		return this.idNumber.slice( 17 , 18 );
	}
}

6. 日期控件

<script type="text/javascript">
var gMonths=new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
var WeekDay=new Array("日","一","二","三","四","五","六");
var strToday="今天";
var strYear="年";
var strMonth="月";
var strDay="日";
var splitChar="-";
var startYear=1900;
var endYear=new Date().getUTCFullYear();//终止年份(当前年份)
var dayTdHeight=12;
var dayTdTextSize=12;
var gcNotCurMonth="#E0E0E0";
var gcRestDay="#FF0000";
var gcWorkDay="#444444";
var gcMouseOver="#79D0FF";
var gcMouseOut="#F4F4F4";
var gcToday="#444444";
var gcTodayMouseOver="#6699FF";
var gcTodayMouseOut="#79D0FF";
var gdCtrl=new Object();
var goSelectTag=new Array();
var gdCurDate=new Date();
var giYear=gdCurDate.getFullYear();
var giMonth=gdCurDate.getMonth()+1;
var giDay=gdCurDate.getDate();
function $(){var elements=new Array();for(var i=0;i<arguments.length;i++) {var element=arguments[i];if(typeof(arguments[i])=='string'){element=document.getElementById(arguments[i]);}if(arguments.length==1){return element;}elements.Push(element);}return elements;}
Array.prototype.Push=function(){var startLength=this.length;for(var i=0;i<arguments.length;i++){this[startLength+i]=arguments[i];}return this.length;}
String.prototype.HexToDec=function(){return parseInt(this,16);}
String.prototype.cleanBlank=function(){return this.isEmpty()?"":this.replace(/\s/g,"");}
function checkColor(){var color_tmp=(arguments[0]+"").replace(/\s/g,"").toUpperCase();var model_tmp1=arguments[1].toUpperCase();var model_tmp2="rgb("+arguments[1].substring(1,3).HexToDec()+","+arguments[1].substring(1,3).HexToDec()+","+arguments[1].substring(5).HexToDec()+")";model_tmp2=model_tmp2.toUpperCase();if(color_tmp==model_tmp1 ||color_tmp==model_tmp2){return true;}return false;}
function $V(){return $(arguments[0]).value;}
function fPopCalendar(evt,popCtrl,dateCtrl){evt.cancelBubble=true;gdCtrl=dateCtrl;fSetYearMon(giYear,giMonth);var point=fGetXY(popCtrl);with($("calendardiv").style){left=point.x+"px";top=(point.y+popCtrl.offsetHeight+1)+"px";visibility='visible';zindex='99';position='absolute';}$("calendardiv").focus();}
function fSetDate(iYear,iMonth,iDay){var iMonthNew=new String(iMonth);var iDayNew=new String(iDay);if(iMonthNew.length<2){iMonthNew="0"+iMonthNew;}if(iDayNew.length<2){iDayNew="0"+iDayNew;}gdCtrl.value=iYear+splitChar+iMonthNew+splitChar+iDayNew;fHideCalendar();}
function fHideCalendar(){$("calendardiv").style.visibility="hidden";for(var i=0;i<goSelectTag.length;i++){goSelectTag[i].style.visibility="visible";}goSelectTag.length=0;}
function fSetSelected(){var iOffset=0;var iYear=parseInt($("tbSelYear").value);var iMonth=parseInt($("tbSelMonth").value);var aCell=$("cellText"+arguments[0]);aCell.bgColor=gcMouseOut;with(aCell){var iDay=parseInt(innerHTML);if(checkColor(style.color,gcNotCurMonth)){iOffset=(innerHTML>10)?-1:1;}iMonth+=iOffset;if(iMonth<1){iYear--;iMonth=12;}else if(iMonth>12){iYear++;iMonth=1;}}fSetDate(iYear,iMonth,iDay);}
function Point(iX,iY){this.x=iX;this.y=iY;}
function fBuildCal(iYear,iMonth){var aMonth=new Array();for(var i=1;i<7;i++){aMonth[i]=new Array(i);}var dCalDate=new Date(iYear,iMonth-1,1);var iDayOfFirst=dCalDate.getDay();var iDaysInMonth=new Date(iYear,iMonth,0).getDate();var iOffsetLast=new Date(iYear,iMonth-1,0).getDate()-iDayOfFirst+1;var iDate=1;var iNext=1;for(var d=0;d<7;d++){aMonth[1][d]=(d<iDayOfFirst)?(iOffsetLast+d)*(-1):iDate++;}for(var w=2;w<7;w++){for(var d=0;d<7;d++){aMonth[w][d]=(iDate<=iDaysInMonth)?iDate++:(iNext++)*(-1);}}return aMonth;}
function fDrawCal(iYear,iMonth,iCellHeight,iDateTextSize){var colorTD=" bgcolor='"+gcMouseOut+"' bordercolor='"+gcMouseOut+"'";var styleTD=" valign='middle' align='center' style='height:"+iCellHeight+"px;font-weight:bolder;font-size:"+iDateTextSize+"px;";var dateCal="";dateCal+="<tr>";for(var i=0;i<7;i++){dateCal+="<td"+colorTD+styleTD+"color:#990099'>"+WeekDay[i]+"</td>";}dateCal+="</tr>";for(var w=1;w<7;w++){dateCal+="<tr>";for(var d=0;d<7;d++){var tmpid=w+""+d;dateCal+="<td"+styleTD+"cursor:pointer;' οnclick='fSetSelected("+tmpid+")'>";dateCal+="<span id='cellText"+tmpid+"'></span>";dateCal+="</td>";}dateCal+="</tr>";}return dateCal;}
function fUpdateCal(iYear,iMonth){var myMonth=fBuildCal(iYear,iMonth);var i=0;for(var w=1;w<7;w++){for(var d=0;d<7;d++){with($("cellText"+w+""+d)){parentNode.bgColor=gcMouseOut;parentNode.borderColor=gcMouseOut;parentNode.οnmοuseοver=function(){this.bgColor=gcMouseOver;};parentNode.οnmοuseοut=function(){this.bgColor=gcMouseOut;};if(myMonth[w][d]<0){style.color=gcNotCurMonth;innerHTML=Math.abs(myMonth[w][d]);}else{style.color=((d==0)||(d==6))?gcRestDay:gcWorkDay;innerHTML=myMonth[w][d];if(iYear==giYear && iMonth==giMonth && myMonth[w][d]==giDay){style.color=gcToday;parentNode.bgColor=gcTodayMouseOut;parentNode.οnmοuseοver=function(){this.bgColor=gcTodayMouseOver;};parentNode.οnmοuseοut=function(){this.bgColor=gcTodayMouseOut;};}}}}}}
function fSetYearMon(iYear,iMon){$("tbSelMonth").options[iMon-1].selected=true;for(var i=0;i<$("tbSelYear").length;i++){if($("tbSelYear").options[i].value==iYear){$("tbSelYear").options[i].selected=true;}}fUpdateCal(iYear,iMon);}
function fPrevMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value;if(--iMon<1){iMon=12;iYear--;}fSetYearMon(iYear,iMon);}
function fNextMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value;if(++iMon>12){iMon=1;iYear++;}fSetYearMon(iYear,iMon);}
function fGetXY(aTag){var oTmp=aTag;var pt=new Point(0,0);do{pt.x+=oTmp.offsetLeft;pt.y+=oTmp.offsetTop;oTmp=oTmp.offsetParent;}while(oTmp.tagName.toUpperCase()!="BODY");return pt;}
function getDateDiv(){var noSelectForIE="";var noSelectForFireFox="";if(document.all){noSelectForIE="onselectstart='return false;'";}else{noSelectForFireFox="-moz-user-select:none;";}var dateDiv="";dateDiv+="<div id='calendardiv' οnclick='event.cancelBubble=true' "+noSelectForIE+" style='"+noSelectForFireFox+"position:absolute;z-index:99;visibility:hidden;border:1px solid #999999;'>";dateDiv+="<table border='0' bgcolor='#E0E0E0' cellpadding='1' cellspacing='1' >";dateDiv+="<tr>";dateDiv+="<td><input type='button' id='PrevMonth' value='<' style='height:20px;width:20px;font-weight:bolder;' οnclick='fPrevMonth()'>";dateDiv+="</td><td><select id='tbSelYear' style='border:1px solid;' οnchange='fUpdateCal($V(\"tbSelYear\"),$V(\"tbSelMonth\"))'>";for(var i=startYear;i<=endYear;i++){dateDiv+="<option value='"+i+"'>"+i+strYear+"</option>";}dateDiv+="</select></td><td>";dateDiv+="<select id='tbSelMonth' style='border:1px solid;' οnchange='fUpdateCal($V(\"tbSelYear\"),$V(\"tbSelMonth\"))'>";for(var i=0;i<12;i++){dateDiv+="<option value='"+(i+1)+"'>"+gMonths[i]+"</option>";}dateDiv+="</select></td><td>";dateDiv+="<input type='button' id='NextMonth' value='>' style='height:20px;width:20px;font-weight:bolder;' οnclick='fNextMonth()'>";dateDiv+="</td>";dateDiv+="</tr><tr>";dateDiv+="<td align='center' colspan='4'>";dateDiv+="<div style='background-color:#cccccc'><table width='100%' border='0' cellpadding='3' cellspacing='1'>";dateDiv+=fDrawCal(giYear,giMonth,dayTdHeight,dayTdTextSize);dateDiv+="</table></div>";dateDiv+="</td>";dateDiv+="</tr><tr><td align='center' colspan='4' nowrap>";dateDiv+="<span style='cursor:pointer;font-weight:bolder;' οnclick='fSetDate(giYear,giMonth,giDay)' οnmοuseοver='this.style.color=\""+gcMouseOver+"\"' οnmοuseοut='this.style.color=\"#000000\"'>"+strToday+":"+giYear+strYear+giMonth+strMonth+giDay+strDay+"</span>";dateDiv+="</tr></tr>";dateDiv+="</table></div>";return dateDiv;}
with(document){οnclick=fHideCalendar;write(getDateDiv());}
</script>
出生日期:<input type="text" οnclick="fPopCalendar(event,this,this)" οnfοcus="this.select()" readonly> 

7. js去除空格

//去除字符串中间空格
String.prototype.Trim = function() 
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
//去除字符串左侧空格
String.prototype.LTrim = function() 
{
    return this.replace(/(^\s*)/g, "");
}
//去除字符串右侧空格
String.prototype.RTrim = function() 
{
    return this.replace(/(\s*$)/g, "");
}

// 去除空格
function trimRtn(strparam)
{
    var str = strparam.Trim();
    str = str.LTrim();
    str = str.RTrim();
    return str;
}

8. 设置table间隔行的底色(参数传入table标签的id)

function setTrBgColor(str)
{
    var objTable = document.getElementById(str);
    var rowscnt = objTable.rows.length;
    for (var i=0;i<rowscnt;++i)
    {
        if (i%2==0)
        {
            objTable.childNodes[0].childNodes[i].setAttribute("class", "alt");    // alt为css一设置属性
        }
    }
}

9. 判断js数组中是否包含某值

<script type="text/javascript">
// 判断元素是否在数组内并返回索引
Array.prototype.contains = function(obj) 
{
    var i = this.length;
    while (i--) 
    {
        if (this[i] === obj) 
        {
            return i;
        }
    }
    return -1;
}

var arr = new Array("AA","BB","CC");
var str = "BB";
var idx = arr.contains(str);	// 返回str在数组arr中的索引,如果没找到则返回-1
</script>

10. 改变select控件option列表宽度

<script type="text/javascript">
function FixWidth(selectObj)
{
    var newSelectObj = document.createElement("select");
    newSelectObj = selectObj.cloneNode(true);
    newSelectObj.selectedIndex = selectObj.selectedIndex;
    newSelectObj.onmouseover = null;
    
    var e = selectObj;
    var absTop = e.offsetTop;
    var absLeft = e.offsetLeft;
    while(e = e.offsetParent)
    {
        absTop += e.offsetTop;
        absLeft += e.offsetLeft;
    }
    with (newSelectObj.style)
    {
        position = "absolute";
        top = absTop + "px";
        left = absLeft + "px";
        width = "auto";
    }
    
    var rollback = function(){ RollbackWidth(selectObj, newSelectObj); };
    if(window.addEventListener)
    {
        newSelectObj.addEventListener("blur", rollback, false);
        newSelectObj.addEventListener("change", rollback, false);
    }
    else
    {
        newSelectObj.attachEvent("onblur", rollback);
        newSelectObj.attachEvent("onchange", rollback);
    }
    
    selectObj.style.visibility = "hidden";
    document.body.appendChild(newSelectObj);
    newSelectObj.focus();
}

function RollbackWidth(selectObj, newSelectObj)
{
    selectObj.selectedIndex = newSelectObj.selectedIndex;
    selectObj.style.visibility = "visible";
    document.body.removeChild(newSelectObj);
}
</script>

<select id="formulaeSel" οnmοuseοver="FixWidth(this)">
   <option value=""/>
</select>

11. js截取字符串中的字符部分或数字部分

<script type="text/javascript">
var idCtrl = "text123";
var str1 = idCtrl.replace(/[^a-z]+/ig,"");	// 截取字符部分,str1为text
var str2 = idCtrl.replace(/[^0-9]+/ig,"");	// 截取数字部分,str2为123
</script>

12. js + ajax

add_ajax.js

function create_ajax()
{
	var http_request=false;
	if(window.XMLHttpRequest)
	{
		http_request=new XMLHttpRequest();
		if(http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/html');
		}
	}
	else if(window.ActiveXObject)
	{
		try
		{
			http_request=new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch(e)
		{
			try
			{
				http_request=new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch(e)
			{
				http_request = false;
			}
		}
	}
	if(!http_request)
	{
		alert("您正在使用不支持AJAX的浏览器\n初始化失败");
	}
	else
	{
		http_request.onreadystatechange=function()
		{
		};
	}
	
	return http_request;
}

function if_init(http_request)
{
	if(!http_request)
	{
		alert("AJAX未初始化");
		return false;
	}
	return true;
}

function send_get(http_request,url)
{
	if(if_init(http_request))
	{
		http_request.open("GET",url,true);
		http_request.send(null);
		return true;
	}
	return false;
}

function send_post(http_request,url,post)
{
	if(if_init(http_request))
	{
		http_request.open("POST",url,true);
		http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		http_request.send(post);
		return true;
	}
	return false;
}

在使用界面导入add_ajax.js

<script src="js/add_ajax.js" type="text/javascript" charset="UTF-8"></script>

<script type="text/javascript">
var info = "value="+param1;

var link_request = create_ajax();
if (link_request)
{
    link_request.onreadystatechange=function()
	{
	    if(this.readyState==4)
		{
		    if(this.status==200)
		    {
			var retVal = this.responseText;	// retVal是test.php处理后(echo)返回的值
			// code
		    }
		}
	}
    
    send_post(link_request,"ajax/test.php",info);
}
</script>

注意:IE6下上述代码中this会是一个未定义的值,代码要改为

<script type="text/javascript">
var info = "value="+param1;

var link_request = create_ajax();
if (link_request)
{
    link_request.onreadystatechange=function()
	{
	    if(link_request.readyState==4)
		{
		    if(link_request.status==200)
		    {
			var retVal = link_request.responseText;	// retVal是test.php处理后(echo)返回的值
			// code
		    }
		}
	}
    
    send_post(link_request,"ajax/test.php",info);
}
</script>


13. js数组转为json

使用界面需要先导入json.js,然后调用 js数组.toJSONString()


注意:在json.js中有这么一处说明,

object.toJSONString(whitelist)
This method produce a JSON text from a JavaScript value.
It must not contain any cyclical references. Illegal values
will be excluded.

它不允许在页面中出现循环赋值的语句,即当出现上面第3点(页面加载时用js数组值循环为select控件赋值)时,select的option列表会加载意外选项值。

暂时补救措施,手动删除意外option选项

function removeop(id)  // id传入select控件的id
{
    var obj = document.getElementById(id);
    for (var k = obj.length - 1; k > 0; k--) {  
        if (obj.options[k].text == "" ||            
            obj.options[k].text.indexOf("function") >= 0)
        obj.remove(k);  
    } 
}

如果js数组转为json格式后是为PHP服务,在PHP处需要用json_decode()函数先将json转为php中可用的数据格式。


三. PHP部分

1. PHP代码调用js函数

<?php
    echo "<script language='javascript'>func1(param1)</script>";
?>

2. PHP数组转为json数组后在js中可以直接使用

<?php
	$arr = array("name"=>"jaly","age"=>19);
	$arr = json_encode($arr);
?>

<script type="text/javascript">
	var arr = <?php echo $arr;?>;
	document.getElementById("nameCon").value = arr.name; 
	document.getElementById("ageCon").value = arr.age;
</script>

3. form在submit之后在本页处理

(1)

<form  name="inquire" action="<?php echo $_SERVER['PHP_SELF'];?>" method='POST'>
(2)
<input type="hidden" name="action" value="submitted"/>
<input type="submit" value="查询" />
(3)
<?php
    if (isset($_POST['action']) && $_POST['action']=='submitted')
    {
        // code
    }
?>

4. PHP 正则表达式截取过滤

<?php
$idCtrl = "text123";
$str1 = preg_replace('/^([a-z]+).*/i', '$1', $idCtrl);	// 截取字符部分,str1为text
$str2 = preg_replace("/[^0-9]/i","",$idCtrl);		// 截取数字部分,str2为123

$test = "te56est12";
$txt1 = preg_replace('/^([a-z]+).*/i', '$1', $test);	// 截取字符部分,txt1为te
$txt2 = preg_replace("/[^0-9]/i","",$test);		// 截取数字部分,txt2为5612

$idTmp = "text123ab";
$str3 = preg_replace('/[^a-z]/i', '', $idTmp);		// 截取所有字符,str3为textab

preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $name, $matches); // $name可为包含汉字,数字,字母,字符等内容的字符串
$str = join('', $matches[0]);   // $str现在为$name中只包含汉字的字符串
?>

5. PHP计算包含汉字的字符串长度

$strLen = mb_strlen($str,"UTF8"); // 这样计算中一个汉字被当做一个长度处理




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值