<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    主要內(nèi)容:總結(jié)了第四章,主要關(guān)于字符串處理。參考書籍《精通 php5 應(yīng)用開發(fā)》。

    1 )字符串運算符

    其他運算符好多與 java 類似。不過字符串鏈接符號就不同: php 中用 '.'

    ???

    2 )字符串分析

    在某些語言里字符串是作為字符數(shù)組處理的,而 php 把字符串作為一種基本的數(shù)據(jù)類型來處理。因此, php 使用特定的函數(shù)對字符串進行分析。

    ??? 基本的字符串分析函數(shù):

    ??? strlen () :計算字符串的長度

    ??? substr () :取子串

    ??? strpos() strrpos(): 計算子字符串出現(xiàn)的位置

    ??? eg:

    $str = "hello php world! ";

    ?????? echo "<br>";?

    ?????? echo substr($str,10,4);

    ?????? echo "<br>";?

    ?????? echo substr($str,10);

    ?????? echo "<br>";?

    ?????? echo strpos($str,"l");

    ?????? echo "<br>";?

    ?????? echo strrpos($str,'l');

    ?????? echo "<br>";?

    ??? strpos 方法是取第一個匹配位子, strrpos 方法是取最后一個匹配的位子。而這兩個方法需要注意一點:當(dāng)

    ??? 沒有查詢到特定字符串出現(xiàn)的位置時,函數(shù)將返回 FALSE 。因此判斷一個字符串中是否含有另外一個子串的正確方法是

    ??? 使用恒等 “===”

    ??? eg:

    ??? if(strpos($str,"w")===false)

    ??? {//...}

    3 )取字符串偏移 ( 訪問字符串中的字符 )

    如上的方法基本能對字符進行基本操作。

    但是下面介紹一些方法來方便的訪問字符串的字符

    ???

    ??? 一個非常好用的方法那就是使用 {} 括號來取偏移字符

    ??? eg:

    ??? $str= 'this is a book.';

    ??? echo $str{3};//output 's'

    ??? 利用這個方法反序排列字符串:

    ??? $str="this is a book.";

    ??? $len = strlen($str);// 這里前面一直出錯,一個錯誤是因為 $len 前加了個 int

    ??? for($i=$len-1;$i>=0;$i--)

    ??? {

    ?????? echo $str{$i};

    ??? }

    4 )字符串中的分割與連接

    ?

    ??? 分隔字符串,可以使用函數(shù) explode () ,該函數(shù)有三個參數(shù),第一個參數(shù)設(shè)置一個分割字符(串)。第二個參數(shù)指定所要操作的字符串。第三個參數(shù)可選,指定最多將字符串分割為多少子串。該函數(shù)返回一個由被分割的子串組成的數(shù)組。

    eg

    ?????? <?php

    ?????? $this_year = 2007 ;

    ?????? $text = <<< EOT

    ?????? 祝無雙 , F , 1982 , 廣東 , 普通職員

    ?????? 李大嘴 , M , 1981 , 河北 , 普通職員

    ?????? 佟香玉 , F , 1980 , 山西 , 項目經(jīng)理

    EOT;

    ?????? $lines = explode ( "\n" , $text );

    ?????? foreach ( $lines as $userinfo )

    ?????? {

    ?????????? $info = explode ( "," , $userinfo , 3 );

    ?????????? $name = $info [ 0 ];

    ?????????? $sex =( $info [ 1 ]== "F" )? " " : " " ;

    ?????????? $age = $this_year - $info [ 2 ]; ????????

    ?????????? echo " 姓名 :" . $name . " " . $sex . " 年齡: " . $age . "<br>" ;

    ?????? }

    ??? ? ?>

    ?

    關(guān)于定界符 <<< ,字符串必須包含在一組定界符內(nèi)。細(xì)節(jié) 結(jié)束符號必須頂格。

    剛開始看書上的 EOT ,EOD 以為有什么區(qū)別,結(jié)果我試了下,隨便寫。前后對應(yīng),符合標(biāo)識符的命名規(guī)則就行。

    ?

    php explode 對應(yīng) JAVA javascript 里的 split 方法。】

    ?

    連接字符串 implode() 函數(shù),它的別名叫 join

    eg

    ??? <? php

    ??? ??? $fruits = array ( 'apple' , 'banana' , 'pear' );

    ??? ??? $tem = join ( "," , $fruits );

    ??? ??? echo $tem ;

    ??? ? ?>

    javascript 里面有 join 方法,也能很方便將數(shù)組組合為字符串。

    ?

    5 )字符串的整理

    刪除字符串的空白, trim () .

    ?????? <?php

    ?????? $str = "???????? sdf" ;

    ?????? echo strlen ( $str );

    ?????? echo "<br>" ;

    ?????? echo strlen ( trim ( $str ));

    ??? ? ?>

    trim 刪除的是前后空格。

    ltrim rtrim 兩個函數(shù)也是刪除空格,一個刪除左邊空格,一個刪除右邊空格。

    而且刪除的是單字節(jié)空格,當(dāng)這些空格是全角空格這些函數(shù)是沒有作用的。

    【?但雙字節(jié)空格在程序里怎么分的?】

    ?

    6 )字符串的填補

    ?

    str_pad 函數(shù)用于進行字符串的填補工作,

    第一個參數(shù)是處理的字符串對象,第二參數(shù)是總長度,第三個參數(shù)是指長度不夠總長以什么符號來填補,第四個參數(shù)為填補左邊還是右邊(默認(rèn)不寫為填補右邊)。

    eg

    ??? <? php

    ?????? $prices = array (

    ?????? " 人員工資 " => 42840 , " 房租 " => 4000 , " 維修費 " => 925 ,);

    ?????? $sum = 0 ;

    ?????? foreach ( $prices as $title => $pay )

    ?????? {

    ?????????? $sum += $pay ;

    ?????????? echo str_pad ( $title , 15 , "=" );

    ?????????? echo str_pad ( $pay , 15 , "=" , STR_PAD_LEFT );

    ?????????? echo " <br>" ;

    ?????? }

    ?????? echo str_repeat ( "-" , 30 ), "<br>" ;

    ?????? echo str_pad ( " 總支出 " , 15 , "=" ); ?????

    ?????? echo str_pad ( $sum , 15 , "=" , STR_PAD_LEFT );

    ?????? echo " <br>" ;

    ??? ? ?>

    ?

    7 )字符串的反轉(zhuǎn)

    前面曾經(jīng)講過字符串反轉(zhuǎn)的例子,實際上 php 已經(jīng)內(nèi)置了這個函數(shù)。 strrev () 函數(shù)可以對字符串中的字符反序排列,這種反序是按照字節(jié)進行的。

    ??? <?php

    ??? ? ?? echo strrev("hello world !");

    ??? ??>

    ?

    (8) 字符串大小寫轉(zhuǎn)換

    關(guān)于字符串大小寫的轉(zhuǎn)換函數(shù),主要有以下四個。

    strtoupper (): 將給定的字符串全部轉(zhuǎn)換為大些字母

    strtolower () :將給定的字符串全部轉(zhuǎn)換為小寫字母

    ucfirst () 將給定的字符串的首字母轉(zhuǎn)換為大些,其余不變。

    ucwords () :將給定的字符串中全部單詞的首字母轉(zhuǎn)換為大寫。字符串中的單詞均以空白分隔。

    ??? <?php

    ?????? $str = "Tom Is A PHP Programer.";

    ?????? // 全部轉(zhuǎn)換為小寫

    ?????? $lower = strtolower($str);

    ?????? echo $lower;

    ?????? // 全部轉(zhuǎn)換為大寫

    ?????? $upper = strtoupper($str);

    ?????? echo $upper;

    ?????? // 將整句首字母大寫

    ?????? $string = 'hello php world!';

    ?????? echo ucfirst($string);

    ??? ??>

    ?

    9 )字符串的比較

    ?

    除了運算符: < > === 等,還可以有以下三種方法。

    ?

    按字節(jié)比較: strcmp() strcasecmp()

    ?

    放入 strcmp 的兩個字符串將按照字節(jié)的 ascii 碼值進行比較。從 $str1 $str2 各自的首字節(jié)開始。如果前者小于后者返回負(fù)數(shù),反之正數(shù),相等為零。

    【書上這里是錯的,他寫的是前者大于后者返回負(fù)數(shù)】

    ??? <? php

    ?????? $test = strcmp ( "Thomas" , "Tom" );

    ?????? echo $test ;

    ?????? if ( strcmp ( " 大連 " , " 大慶 " )> 0 )

    ?????? {

    ?????????? echo " 大連 " ;

    ?????? } else

    ?????? {

    ?????????? echo " 大慶 " ;

    ?????? }

    ??? ? ?>

    php 中也可以進行忽略大小寫比較,使用函數(shù) strcasecmp (). 這就是說,同一個字符的大小寫形式認(rèn)為是相等的。

    ?

    按自然排序法比較 strnatcmp() strnatcasecmp()

    ?

    模擬了人類的思維習(xí)慣。

    ??? <? php

    ??? $arr = array (

    ??? "photo1.jpg" , "photo2.jpg" , "photo10.jpg" , "photo12.jpg" ,);

    ??? $max_str = $arr [ 0 ];

    ??? for ( $i = 1 ; $i < count ( $arr ); $i ++)

    ??? {

    ?????? if ( strnatcmp ( $arr [ $i ], $max_str )> 0 )

    ?????? {

    ?????????? $max_str = $arr [ $i ];

    ?????? }

    ??? }

    ??? echo $max_str ;

    ??? ? ?>

    本來以為輸出是 photo2.jpg ,但經(jīng)過 strnatcmp 輸出的結(jié)果是 photo12.jpg.

    strnatcasecmp 是這個函數(shù)也是忽略字母大小寫后,進行比較。

    ?

    使用模糊比較

    ?

    similar_text 作用在兩個字符串,返回它們中相匹配的個數(shù)。

    soundex() 計算出一個關(guān)鍵值。

    感覺用得少,不總結(jié)。

    ?

    10 )字符串的替換

    php 中提供了強大的字符串替換功能,可以使用 str_replace() strtr() 兩個函數(shù)實現(xiàn)字符替換功能。他們都可以將給定字符串的指定部分用另外一個字符串替換。

    str_replace() 函數(shù)有三個參數(shù),第一個參數(shù)稱為目標(biāo)對象,第二個參數(shù)是替換對象,最后一個參數(shù)是所要處理的字符串。通俗說:用第二個字符串替換第三個字符串中的第一個字符串對應(yīng)的字符串。

    eg

    str_replace("\\","",$json);

    strtr 也叫字符串翻譯。我認(rèn)為沒有必要記憶這么多相同功能的函數(shù)。 J

    11 )字符串的格式化

    php 中可以使用 printf() sprintf() 兩個參數(shù)有相同的參數(shù)列表,并且都支持多個參數(shù)。其中,第一個參數(shù)是格式化字符串,可以包含以百分號開始,且以格式類型字符結(jié)束的格式單元。格式單元的數(shù)量可以任意。函數(shù)中余下的參數(shù)變量將按順序放到這些單元中格式化。

    <? php

    ?????? // 日期的表示

    ?????? $date = sprintf ( "%04d-%02d-%02d" , 2006 , 9 , 3 ); // 返回 "2006-09-03"

    ?????? echo $date ;

    ?????? // 價格的表示

    ?????? $money1 = 1038.45 ;

    ?????? $money2 = 2154.75 ;

    ?????? $sum_money = sprintf ( "%01.2f " , $money1 + $money2 ); // 返回 "3193.20 "

    ?????? echo $sum_money ;

    ?????? // 整數(shù)和字符串

    ?????? $format = "There ara %d dogs in %s." ;

    ?????? printf ( $format , "5.1" , "my room" ); // 輸出 There ara 5 dogs in? my room.

    ??????

    ?????? // 一個百分比

    ?????? printf ( "%.2f%%" , 32.1 ); // 輸出 "32.10%"

    ??? ? ?>

    格式化數(shù)字

    ?

    我們經(jīng)常在國際慣例中發(fā)現(xiàn),表示價格或其他數(shù)字,經(jīng)常用到千位分隔符。

    number_format 2 種用法:

    第一種:

    ??? <? php

    ?????? $number = 1234.5678 ;

    ?????? echo number_format ( $number ); // 沒有小數(shù),進行了四舍五入

    ?????? echo number_format ( $number , 2 ); // 保留 2 位小數(shù),也進行了四舍五入

    ??? ? ?>

    這種也是我們常用的。而在個別地區(qū)的數(shù)字表示方式。例如數(shù)字的格式表示為“ 1 234,56

    <? php

    ?????? $number = 1234.5678 ;

    ?????? echo number_format ( $number , 2 , ',' , ' ' );

    ?>

    其中前兩個參數(shù)不用多說,第三個參數(shù)是小數(shù)點的表示,第四個參數(shù)是千位分隔符號。

    ?

    關(guān)于此次 php 學(xué)習(xí),是項目用 php ,所以我學(xué)習(xí) php ,剛開始沒有想到 php 有那么強大。隨后發(fā)現(xiàn)其非常強大,但是學(xué)習(xí)筆記也不打算繼續(xù)。只是以后在 php 中遇到什么問題,準(zhǔn)備 php 手冊隨時查閱。

    posted on 2007-08-23 23:33 -274°C 閱讀(818) 評論(0)  編輯  收藏 所屬分類: PHP

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網(wǎng)站

    關(guān)注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914554
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 亚洲免费在线播放| a色毛片免费视频| 色www永久免费视频| 一个人看的www免费视频在线观看| 野花香高清在线观看视频播放免费| 无码国产精品一区二区免费式芒果| 青娱分类视频精品免费2| 老司机永久免费网站在线观看| 亚洲国产精品毛片av不卡在线| 亚洲av无码专区在线播放| 亚洲AV一二三区成人影片| 亚洲一区二区三区电影| 久久久久久a亚洲欧洲aⅴ| 亚洲中文字幕久久精品无码APP| 亚洲av日韩av不卡在线观看 | 免费观看激色视频网站bd| 成年女人色毛片免费看| 亚洲国产日韩在线观频| 亚洲av手机在线观看| 日韩免费a级在线观看| 国产亚洲一区区二区在线| 亚洲大尺码专区影院| 日韩电影免费在线观看网址| 成人无码WWW免费视频| 成年轻人网站色免费看| 国产成人精品久久亚洲| 亚洲国产另类久久久精品黑人| 亚洲jjzzjjzz在线播放| caoporm超免费公开视频| 嫖丰满老熟妇AAAA片免费看| 亚洲精品国产高清不卡在线| 91亚洲国产成人精品下载| 美女被免费网站在线视频免费| 免费无码成人AV在线播放不卡| 国产美女做a免费视频软件| 亚洲A∨无码一区二区三区 | 亚洲精品综合久久中文字幕| 无套内谢孕妇毛片免费看看| 四虎成年永久免费网站| 久久精品亚洲男人的天堂| 77777午夜亚洲|