Php基础字符串篇
1、單引號(hào)與雙引號(hào)的區(qū)別:
雙引號(hào)的內(nèi)容是經(jīng)過(guò)PHP語(yǔ)法分析器解析過(guò)的,任何變量在雙引號(hào)中都會(huì)被轉(zhuǎn)換為它的值進(jìn)行輸出,而單引號(hào)的內(nèi)容是所見(jiàn)即所得,無(wú)論有無(wú)變量,都被當(dāng)作普通字符串進(jìn)行原樣輸出;另外在進(jìn)行sql查詢之前,所有字符串都必須加單引號(hào),防止可能的注入漏洞和sql錯(cuò)誤;
2、字符串連接符:
半角句號(hào).是字符串連接符,可以把兩個(gè)或兩個(gè)以上的字符串連接成一個(gè)字符串,應(yīng)用字符串連接符無(wú)法實(shí)現(xiàn)大量的字符串拼接,PHP允許在雙引號(hào)中直接包含字符串變量進(jìn)行連接;
3、字符串常用操作函數(shù):
trim() 去除字符串首尾空格和特殊字符,并返回去掉空格和特殊字符之后的字符串。
addcslashes() 函數(shù)在指定的字符前添加反斜杠。第二個(gè)參數(shù)可以是 字符、字符串、或范圍字符如“a..z” "A..Z"
addslashes() 函數(shù)在指定的預(yù)定義字符前添加反斜杠。
預(yù)定義字符是:單引號(hào) (')、雙引號(hào) (")、反斜杠 (\)、NULL
strlen() 確定字符串長(zhǎng)度
mb_strlen() 確定中文字符串長(zhǎng)度,gbk編碼下每個(gè)中文字符所占字節(jié)為2,utf-8編碼下每個(gè)中文字符所占字節(jié)為3,但這樣過(guò)于麻煩,在此借鑒wordpress中的一段代碼:
大小寫轉(zhuǎn)換 strtolower 小寫? strtoupper 大寫 ucfirst 將字符串第一個(gè)字母大寫? ucwords將字符串每個(gè)單詞首字母大寫
字符串比較是否相等:strcmp()? 區(qū)分大小寫比較是否相等返回true或false? strcasecmp() 不區(qū)分大小寫比較是否相等,返回true或false
截取中英文混合字符串,防止出現(xiàn)亂碼的方法:
/* * 中文截取,支持gb2312,gbk,utf-8,big5 * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取長(zhǎng)度 * @param string $charset utf-8|gb2312|gbk|big5 編碼 * @param $suffix 是否加尾綴 */ function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) {if(function_exists("mb_substr")){if(mb_strlen($str, $charset) <= $length) return $str;$slice = mb_substr($str, $start, $length, $charset);}else{$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";preg_match_all($re[$charset], $str, $match);if(count($match[0]) <= $length) return $str;$slice = join("",array_slice($match[0], $start, $length));}if($suffix) return $slice."…";return $slice;中英文混合字符串反轉(zhuǎn):
UTF-8編碼:
$str = '中文.it動(dòng)力!'; echo str_rev_gb($str); /** 此函數(shù)的作用是反轉(zhuǎn)中文字符串 mb_strlen() 獲取字符的長(zhǎng)度 mb_substr() 獲取字符的單個(gè)元素 krsort() 按照鍵值逆序排序數(shù)組 implode() 將數(shù)組拼接為字符串 explode() 使用字符串分隔字符串*/ function str_rev_gb($str){//判斷輸入的是不是utf8類型的字符,否則退出if(!is_string($str)||!mb_check_encoding($str,'UTF-8')){exit("輸入類型不是UTF8類型的字符串");}$array=array();//將字符串存入數(shù)組$l=mb_strlen($str,'UTF-8');for($i=0;$i<$l;$i++){$array[]=mb_substr($str,$i,1,'UTF-8');}//反轉(zhuǎn)字符串krsort($array);//拼接字符串$string=implode($array);return $string; }echo utf8_strrev($str,false); //正則表達(dá)式 function utf8_strrev($str, $reverse_numbers = true){$pattern = $reverse_numbers ? '/./us' : '/(\d+)?./us';preg_match_all($pattern, $str, $ar);return join('',array_reverse($ar[0])); }GBK編碼: function strrev_ext ($str) {if (is_string($str)) {$len = strlen($str);$newstr = "";for ($i = $len - 1; $i >= 0; $i -= 1) {if(ord($str{$i})>160){$newstr .= $str{$i-1}.$str{$i};$i-=1;}else{$newstr.=$str{$i};}}return $newstr;}else{return false;} } //函數(shù)使用示范//純英文字符 $str="abcde"; echo strrev_ext($str)."<br />"; //純漢字 $str="中華人民"; echo strrev_ext($str)."<br />"; //中英混合 $str="中國(guó)china人民people"; echo strrev_ext($str)."<br />"; str_split() 字符串轉(zhuǎn)數(shù)組 無(wú)分隔符explode() 使用一個(gè)字符串分割另一個(gè)字符串返回?cái)?shù)組
另外,更多PHP字符串操作可參考該網(wǎng)址
總結(jié)
- 上一篇: ThinkPhp框架基础知识
- 下一篇: Php基础时间篇