久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHP的字符串函數(shù)

 gearss 2016-06-04

 

1、字符串的連接

字符串可以使用字符串連接符(.)來(lái)連接

常見的用途是建立大塊的HTML字串代碼,,賦值號(hào) (=) 連接符 (.) 可以被簡(jiǎn)寫合并為 (.=) 符號(hào)

 

2,、在字符串中使用變量

這個(gè)功能讓你無(wú)須使用連接符號(hào)來(lái)粘和大量的簡(jiǎn)單字符串

 

單引號(hào)串和雙引號(hào)串在PHP中的處理是不相同的。雙引號(hào)串中的內(nèi)容可以被解釋而且替換,,而單引號(hào)串中的內(nèi)容總被認(rèn)為是普通字符,。例如:

$foo = 2;
echo "foo is $foo"; //
打印結(jié)果: foo is 2
echo 'foo is $foo'; //
打印結(jié)果: foo is $foo
echo "foo is $foo\n"; //
打印結(jié)果: foo is 2 (同時(shí)換行)
echo 'foo is $foo\n'; //
打印結(jié)果: foo is $foo\n

 

為避免這些字串使用中的潛在問題,我們通常把復(fù)雜的變量從字串中分離開來(lái),,就像這樣:
echo 'value = ' . $a[$i][$j];

還有一種辦法是將復(fù)雜變量用花括號(hào)括起來(lái),,語(yǔ)法分析器就能正確辨認(rèn)了:
echo "value = {$a[$i][$j]}" //
打印二維數(shù)組$a的某個(gè)元素
這樣,又出現(xiàn)新問題了,。當(dāng)我們想在字串中引用花括號(hào)字符本身時(shí),,就要記得使用轉(zhuǎn)義符了:
$var = 3;
echo "value = {$var}"; //
打印結(jié)果 "value = 3"
echo "value = \{$var}"; //
打印結(jié)果 "value = {3}"

 

3字符串的長(zhǎng)度

長(zhǎng)度
PHP
提供strlen函數(shù)來(lái)計(jì)算字符串的長(zhǎng)度:
$str = "test";
echo strlen($str); //
將輸出 4
有點(diǎn)奇怪的是strlen將中日等漢字以及全角字符都當(dāng)作兩個(gè)或四個(gè)長(zhǎng)度計(jì)算,。好在mbstringicon兩個(gè)函數(shù)可以幫助解決這個(gè)問題,比如:
$len = iconv_strlen($str, "GBK");
$len = mb_strlen($str, "GBK");
:mbstring模塊提供了大量的對(duì)含有多字節(jié)字符的字符串的處理函數(shù),,推薦多加應(yīng)用

 

4,、字符串的分隔與連接
PHP
允許你把一個(gè)字符串按照一個(gè)分隔符進(jìn)行分隔成一個(gè)數(shù)組,或者將一個(gè)數(shù)組組合成一個(gè)字符串,??聪旅娴睦樱?/span>
$str = "i love iwind";
$array = explode(" ", $str);
上面的explode函數(shù),就把$str字符串按空格字符進(jìn)行分隔,,結(jié)果返回一個(gè)數(shù)組$array:array("i", "love", "iwind").explode函數(shù)有類似功能的有:preg_split(), spliti(), split()等函數(shù),。

與此相反的,implodejoin則能把一個(gè)數(shù)組結(jié)合成一個(gè)字符串,,他們是具有完全相同功能的函數(shù),。
$array = array("i", "love", "iwind");
$str = implode(" ", $array);
例中的implode函數(shù)將數(shù)組$array的每個(gè)元素用空格字符進(jìn)行連接,返回一個(gè)字符串 $str "i love iwind".

 

5,、字符串的裁剪
一個(gè)字符串首和尾,,可能不是你想要的部分,就可以用

trim去除一個(gè)字符串的兩端空格,

rtrim去除一個(gè)字符串的尾部空格,

ltrim去除一個(gè)字符串的首部空格等函數(shù)
echo trim(" i love iwind "); //
將得到 "i love iwind"
echo rtrim(" i love iwind "); //
將得到 " i love iwind"
echo ltrim(" i love iwind "); //
將得到 "i love iwind "
其實(shí)這三個(gè)參數(shù)不僅可以去除字符串首尾的空格,,還可以去除它們的第二個(gè)參數(shù)指定的字符,,如:
echo trim(",1,2,3,4,", ","); //
將得到 1,2,3,4 兩端的","號(hào)被裁掉了。

有時(shí)還會(huì)看到有人使用chop這個(gè)函數(shù),,其實(shí)它是rtrim的同義函數(shù)

 

6,、字符串大小寫轉(zhuǎn)換
對(duì)于英文字母來(lái)說(shuō),可以用strtoupper,strtolower將其轉(zhuǎn)變成大寫或小寫,。
echo strtoupper("i love iwind"); //
將得到 I LOVE IWIND
echo strtolower("I LOVE IWIND"); //
將得到 i love iwind

 

7,、字符串的比較
一般可以用 !=, == 比較兩個(gè)對(duì)象是否相等,只所以說(shuō)是兩個(gè)對(duì)象,,是因?yàn)樗鼈儾灰欢ㄈ繛樽址?,也可以為整型等等。比?/span>
$a = "joe";
$b = "jerry";
if ($a != $b)
{
     echo "
不相等";
}
else
{
     echo "
相等";
}
如果用 !==,===(可以看到多了一個(gè)等號(hào))比較的話,,兩個(gè)對(duì)象的類型要嚴(yán)格相等才能返回true;否則用==,!=則會(huì)將字符串自動(dòng)轉(zhuǎn)換成相應(yīng)的類型,,以便進(jìn)行比較.
22 == "22"; //
返回 true
22 === "22"; //
返回false
正因?yàn)檫@樣,所以我們的程序時(shí)常會(huì)發(fā)生一些想不到的意外
0 == "
我愛你"; // 返回true
1 == "1
我愛你";// 返回true

PHP
里還有這樣一組用于字符串比較的函數(shù):strcmp,strcasecmp,strncasecmp(), strncmp(),,它們都是如果前者比后者大,則返回大于0的整數(shù),;如果前者比后者小,則返回小于0的整數(shù),;如果兩者相等,,則返回0.它們比較的原理與 其它語(yǔ)言的規(guī)則都是一樣的。
strcmp
是用于區(qū)分大小寫(即大小寫敏感)的字符串比較:
echo strcmp("abcdd", "aBcde"); //
返回 1 (>0), 比較的是 "b""B"

strcasecmp
用于不區(qū)分大小寫的字符串比較:
echo strcasecmp("abcdd", "aBcde"); //
返回 -1 (<0), 比較的是"d""e"

strncmp
用于比較字符串的一部分,從字符串的開頭開始比較,,第三個(gè)參數(shù),,為要比較的長(zhǎng)度:
echo strncmp("abcdd", "aBcde", 3); //
返回 1 (>0), 比較了 abc aBc

strncasecmp
用于不區(qū)分大小寫的比較字符串的一部分,從字符串的開頭開始比較,,第三個(gè)參數(shù),,為要比較的長(zhǎng)度:
echo strncasecmp("abcdd", "aBcde", 3); //
返回 0, 比較了 abc aBc, 由于不區(qū)分大小寫,所以兩者是相同的,。

還有一種情況是單單比較字符串大小,,達(dá)不到我們預(yù)定的要求,比如照常理 10.gif 會(huì)比 5.gif 大,,但如果應(yīng)用上面幾個(gè)函數(shù),,就會(huì)返回 -1,即表示 10.gif5.gif,針對(duì)這種情況,PHP提供了兩個(gè)自然對(duì)比的函數(shù)strnatcmp,strnatcasecmp
echo strnatcmp("10.gif", "5.gif"); //
返回 1 (>0)
echo strnatcasecmp("10.GIF", "5.gif"); //
返回 1 (>0)

 

8,、字符串的替換
替換的意義在于將一個(gè)字符串的一部分進(jìn)行改變,,使之成為別外一個(gè)新的字符串,以滿足新的要求,。PHP里通常用str_replace("要替換的內(nèi)容", "要取代原內(nèi)容的字符串", "原字符串")進(jìn)行替換,。
echo str_replace("iwind", "kiki", "i love iwind, iwind said"); //
將輸出 "i love kiki, kiki said"
即將 原字符串中的所有"iwind"都替換成了"kiki".

str_replace
是大小寫敏感的,所以對(duì)你不能設(shè)想用 str_replace("Iwind", "kiki",...)替換原字符串中的"iwind".

str_replace
還可以實(shí)現(xiàn)多對(duì)一,,多對(duì)多的替換,,但無(wú)法實(shí)現(xiàn)一對(duì)多的替換:
echo str_replace(array("iwind", "kiki"), "people", "i love kiki, iwind said");
將會(huì)輸出
i love people, people said
第一個(gè)參數(shù)中的array("iwind", "kiki")都被替換成了"people"

echo str_replace(array("iwind", "kiki"), array("gentle man", "ladies"), "i love kiki, iwind said");
輸出 i love ladies, gentle man said 。也就是說(shuō)第一個(gè)數(shù)組中的元素被第二個(gè)數(shù)組中的相對(duì)應(yīng)的元素替換掉了,,如果有一個(gè)數(shù)組比另一個(gè)數(shù)組元素?cái)?shù)要少,那么不足的都會(huì)當(dāng)作空來(lái)處理,。

與此有些類似的是strtr,用法請(qǐng)參閱手冊(cè),它們的比較請(qǐng)參閱http://diary./index.php?action=info&id=372 .

此外,,PHP還提供了substr_replace,實(shí)現(xiàn)替換一部分的字符串。語(yǔ)法如下:
substr_replace (
原字符串, 要替代的字符串, 開始替換的位置 [, 替換的長(zhǎng)度])
其中,,開始替換的位置從0開始計(jì)算,,應(yīng)該小于原字符串的長(zhǎng)度。要替換的長(zhǎng)度是可選的,。
echo substr_replace("abcdefgh", "DEF", 3); //
將輸出 "abcDEF"
echo substr_replace("abcdefgh", "DEF", 3, 2); //
將輸出 "abcDEFfgh"
第一個(gè)例子中,,從第三個(gè)位置(即"d")開始替換,從而把 "defgh"都替換成了“DEF”
第二個(gè)例子中,,也是從第三個(gè)位置(即"d")開始替換,,但只能替換2個(gè)長(zhǎng)度,即到e,所以就把"de"替換成了"DEF".

PHP
還提供了preg_replace,preg_replace_callback,ereg_replace,eregi_replace等函數(shù)應(yīng)用正則表達(dá)式來(lái)完成字符串替換

 

9,、字符串的查找與匹配
PHP
里用于查找或者匹配或者定位的函數(shù)非常多,,它們都有不同的意義

strstr,stristr.后者與前者的功能,返回值都一樣,,只是不區(qū)分大小寫,。
strstr("
母字符串", "子字符串")用來(lái)查找子字符串在母字符串中第一次出現(xiàn)的位置,并返回母字符串中從子字符串開始到母字符串結(jié)束的部分,。比如
echo strstr("abcdefg", "e"); //
將輸出 "efg"
如果找不到子字符串,則返回空,。因?yàn)榭梢杂脕?lái)判斷一個(gè)字符串中是否含有另外一個(gè)字符串:
$needle = "iwind";
$str = "i love iwind";
if (strstr($str, $needle))
{
     echo "
里面有 iwind";
}
else
{
     echo "
里面沒有 iwind";
}
將會(huì)輸出"里面有 iwind"

HTML
相關(guān)
1,htmlspecialchars($string)
這是它的最簡(jiǎn)單用法,,將字符串中的一些特殊字符(顧名思義)&,',"<,>轉(zhuǎn)換成它們對(duì)應(yīng)的HTML實(shí)體形式:
$str = "i love <font color="red">kiki</font>, iwind said.";
echo htmlspecialchars($str);
將會(huì)輸出
i love <font color="red">kiki</font>, iwind said.

2,htmlentities($string)
將所有能轉(zhuǎn)換成實(shí)體形式的字符都轉(zhuǎn)換成實(shí)體形式。

3,html_entity_decode($string);
PHP4.3.0
以后加入的具有與htmlentities($string)相反的功能,。

4,nl2br($string)
將字符串中所有換行符轉(zhuǎn)變成<br /> + 換行符,。如:
$str = "i love kiki,\n iwind said.";
echo nl2br($str);
將會(huì)輸出
i love kiki,<br />
iwind said.

 

10、字符串的加密
加密字符串最常用的就是md5了,,它將一個(gè)字符串轉(zhuǎn)換成一個(gè)長(zhǎng)32位的唯一的字符串,。
echo md5("i love iwind"); //
將輸出 "2df89f86e194e66dc54b30c7c464c21c"

PHP5md5加了第二個(gè)參數(shù),從而使它可以輸出16位的加密后的字符串

 

11,、查找字符位置函數(shù):
strpos($str,search,[int]):
查找search$str中的第一次位置從int開始,;
stripos($str,search,[int]):
函數(shù)返回字符串在另一個(gè)字符串中第一次出現(xiàn)的位置。該函數(shù)對(duì)大小寫不敏感
strrpos($str,search,[int]):
查找search$str中的最后一次出現(xiàn)的位置從int

 

12,、加空格函數(shù)
chunk_split($str,2);
$str字符里面按2個(gè)字符就加入一個(gè)空格

 

13,、數(shù)據(jù)庫(kù)相關(guān)函數(shù)
addslashes($str)
:使str內(nèi)單引號(hào)(')、雙引號(hào)("),、反斜線(\)與 NUL

字符串轉(zhuǎn)換為\',",\\,。
magic_quotes_gpc = On
自動(dòng)對(duì) get post cookie的內(nèi)容進(jìn)行轉(zhuǎn)義

get_magic_quotes_gpc()檢測(cè)是否打開magic_quotes_gpc

stripslashes() 去除字符串中的反斜杠

13、快速創(chuàng)建字符串?dāng)?shù)組的函數(shù)range()

比如range()函數(shù)可以快速創(chuàng)建從19的數(shù)字?jǐn)?shù)組:

<?php
$numbers=range(1,9);   //
range直接創(chuàng)建1~99個(gè)數(shù)字組成的數(shù)組,,以“1”開始“9”結(jié)束,。
echo $numbers[1];        //
輸出創(chuàng)建的第二個(gè)數(shù)組值:2echo $numbers[0];則輸入第一個(gè)值:0,。
?>

當(dāng)然,,使用range(9,1)則創(chuàng)建了91的數(shù)字?jǐn)?shù)組。同時(shí),,range()還可以創(chuàng)建從az 的字符數(shù)組:

<?php
$numbers=range(a,z);
foreach ($numbers as $mychrs)    //
遍歷$numbers數(shù)組,,每次循環(huán)當(dāng)前單元值被賦給$mychrs
echo $mychrs." ";                    //output a b c d e f g h i j k l m n o p q r s t u v w x y z
?>

//foreach是一種遍歷數(shù)組的簡(jiǎn)便方法,foreach 僅能用于數(shù)組,,當(dāng)試圖將其用于其它數(shù)據(jù)類型或者一個(gè)未初始化的變量時(shí)會(huì)產(chǎn)生錯(cuò)誤,,它有兩種格式:

foreach (array_ as $value)       statementforeach (array_ as $key => $value)       statement
第一種格式遍歷給定的 array_ 數(shù)組。每次循環(huán)中,,當(dāng)前單元的值被賦給 $value 并且數(shù)組內(nèi)部的指針向前移一步(因此下一次循環(huán)中將會(huì)得到下一個(gè)單元),。第二種格式做同樣的事,只除了當(dāng)前單元的鍵名也會(huì)在每次循環(huán)中被賦給變量 $key


使用字符數(shù)組時(shí)注意大小寫,,比如range(A,z)range(a,Z)是不一樣的,。

range()函數(shù)還具有第三個(gè)參數(shù),該參數(shù)的作用是設(shè)定步長(zhǎng),比如range(1,9,3)創(chuàng)建的數(shù)組元素是:1,、4,、7

 

14、常規(guī)字符串?dāng)?shù)組的排序

一般數(shù)組中的各元素均以字符或數(shù)字表現(xiàn)的,,所以可對(duì)數(shù)組元素進(jìn)行升序排列,,該功能函數(shù)為sort()。比如:

<?php
$people=array('name','sex','nation','birth');
foreach ($people as $mychrs)
     echo $mychrs." ";
sort($people);
echo "<br />---
排序后---<br />";
foreach ($people as $mychrs)
     echo $mychrs." ";
?>

升序排序后的數(shù)組元素顯示為 birth name nation sex,,當(dāng)然,,sort()函數(shù)是區(qū)分字母大小寫的(字母從大到小的順序是:A…Z…a…z

Sort()函數(shù)還具有第二參數(shù),用來(lái)說(shuō)明升序的規(guī)則是用來(lái)比較數(shù)字還是字符串的,。比如:

<?php
echo "---
按數(shù)字升序排序---<br />";
$num2=array('26','3',);
sort($num2,SORT_NUMERIC);
foreach ($num2 as $mychrs)
echo $mychrs." ";

echo "<br />---按字符升序排序---<br />";
$num3=array('26','3');
sort($num3,SORT_STRING);
foreach ($num3 as $mychrs)
     echo $mychrs." ";
?>

SORT_NUMERICSORT_STRING用來(lái)聲明按數(shù)字或字符的升序排列,。如果按照數(shù)字升序排列是:326,;但如果按照字符升序排列則是:26,,3了。

PHP中除了升序函數(shù)以外,,還有降序或稱反向排列的函數(shù),,就是rsort()函數(shù),比如:

$num1=range(1,9);
rsort($num1);                //
這里其實(shí)就相當(dāng)于range(9,1)

 

15,、關(guān)聯(lián)數(shù)組的排序

PHP除了支持?jǐn)?shù)字索引數(shù)組以外,,還支持相關(guān)數(shù)組。比如如下數(shù)組就是一個(gè)相關(guān)(關(guān)聯(lián))數(shù)組:

$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');

使用sort($peoples)默認(rèn)即是按照元素定義值的升序排序,,在關(guān)聯(lián)數(shù)組中可使用asort()函數(shù)表示按元素值升序排序,,關(guān)聯(lián)數(shù)組中最主要的則是可按照關(guān)鍵字(如xmxb,、mz等)的升序排序,,該方法是用函數(shù)ksort()函數(shù)。

<?php
$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');
foreach ($peoples as $mychrs)
     echo $mychrs." ";

echo "<br />--按元素值升序排列--<br />";
asort($peoples);
foreach ($peoples as $mychrs)
     echo $mychrs." ";

echo "<br />--按關(guān)鍵字升序排列--<br />";
ksort($peoples);
foreach ($peoples as $mychrs)
     echo $mychrs." ";
?>
和常規(guī)數(shù)組擁有sort()升序函數(shù)的反向排序rsort()降序函數(shù)相對(duì)應(yīng)的,,關(guān)聯(lián)數(shù)組也有對(duì)應(yīng)的降序函數(shù):asort()函數(shù)和arsort()函數(shù),、ksort()函數(shù)和krsort()函數(shù),。
記憶:原型函數(shù)是sort(),,其中ak表示關(guān)聯(lián)數(shù)組相關(guān)必須前置,,反向排序使用r修飾,。

 

16、數(shù)組元素隨機(jī)排序

PHP中使用shuffle()函數(shù)將數(shù)組元素進(jìn)行隨機(jī)的重新排序,,每次都會(huì)顯示不同的排序組合,,比如:

<?php
$fer=array('cnbruce','cnrose','cnjames','cnanne');
shuffle($fer);         //
隨即排序,每刷新一次頁(yè)面則進(jìn)行一次隨機(jī)排序。

foreach ($fer as $mychrs)
echo $mychrs." ";
?>

 

17,、PHP數(shù)組按原順序反向排序

PHP中可使用array_reverse()函數(shù)將數(shù)組元素按原順序反向排序,。比如:

<?php
$fer=array('cnbruce','cnrose','cnjames','cnanne');
foreach ($fer as $mychrs)
echo $mychrs." ";

$fer=array_reverse($fer);     //將數(shù)組內(nèi)元素按原順序反向排序
echo "<br />--
按原順序反向--<br />";
foreach ($fer as $mychrs)
echo $mychrs." ";
?>

output:   cnbruce cnrose cnjames cnanne
               --
按原順序反向--
              cnanne cnjames cnrose cnbruce

注意這里的 $fer=array_reverse($fer); 在此之前的任何排序函數(shù)均只是聲明引用,并沒有對(duì)原有數(shù)組進(jìn)行重新定義,,但當(dāng)我調(diào)試該函數(shù)時(shí)則需要重新定義,。這是因?yàn)?span lang="EN-US" xml:lang="EN-US">array_reverse()是返 回原數(shù)組修改后的副本,如果不需要原有數(shù)組,,可對(duì)原數(shù)組重新定義達(dá)到覆蓋的目的,,否則就另外定義數(shù)組保存副本,比 如:$fer_bak=array_reverse($fer_bak);

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多