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

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

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

    主要內容:總結了第四章,主要關于字符串處理。參考書籍《精通 php5 應用開發》。

    1 )字符串運算符

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

    ???

    2 )字符串分析

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

    ??? 基本的字符串分析函數:

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

    ??? substr () :取子串

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

    ??? 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 方法是取最后一個匹配的位子。而這兩個方法需要注意一點:當

    ??? 沒有查詢到特定字符串出現的位置時,函數將返回 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 )字符串中的分割與連接

    ?

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

    eg

    ?????? <?php

    ?????? $this_year = 2007 ;

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

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

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

    ?????? 佟香玉 , F , 1980 , 山西 , 項目經理

    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>" ;

    ?????? }

    ??? ? ?>

    ?

    關于定界符 <<< ,字符串必須包含在一組定界符內。細節 結束符號必須頂格。

    剛開始看書上的 EOT ,EOD 以為有什么區別,結果我試了下,隨便寫。前后對應,符合標識符的命名規則就行。

    ?

    php explode 對應 JAVA javascript 里的 split 方法。】

    ?

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

    eg

    ??? <? php

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

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

    ??? ??? echo $tem ;

    ??? ? ?>

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

    ?

    5 )字符串的整理

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

    ?????? <?php

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

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

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

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

    ??? ? ?>

    trim 刪除的是前后空格。

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

    而且刪除的是單字節空格,當這些空格是全角空格這些函數是沒有作用的。

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

    ?

    6 )字符串的填補

    ?

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

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

    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 )字符串的反轉

    前面曾經講過字符串反轉的例子,實際上 php 已經內置了這個函數。 strrev () 函數可以對字符串中的字符反序排列,這種反序是按照字節進行的。

    ??? <?php

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

    ??? ??>

    ?

    (8) 字符串大小寫轉換

    關于字符串大小寫的轉換函數,主要有以下四個。

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

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

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

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

    ??? <?php

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

    ?????? // 全部轉換為小寫

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

    ?????? echo $lower;

    ?????? // 全部轉換為大寫

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

    ?????? echo $upper;

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

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

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

    ??? ??>

    ?

    9 )字符串的比較

    ?

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

    ?

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

    ?

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

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

    ??? <? php

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

    ?????? echo $test ;

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

    ?????? {

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

    ?????? } else

    ?????? {

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

    ?????? }

    ??? ? ?>

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

    ?

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

    ?

    模擬了人類的思維習慣。

    ??? <? 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 ,但經過 strnatcmp 輸出的結果是 photo12.jpg.

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

    ?

    使用模糊比較

    ?

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

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

    感覺用得少,不總結。

    ?

    10 )字符串的替換

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

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

    eg

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

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

    11 )字符串的格式化

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

    <? 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 ;

    ?????? // 整數和字符串

    ?????? $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%"

    ??? ? ?>

    格式化數字

    ?

    我們經常在國際慣例中發現,表示價格或其他數字,經常用到千位分隔符。

    number_format 2 種用法:

    第一種:

    ??? <? php

    ?????? $number = 1234.5678 ;

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

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

    ??? ? ?>

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

    <? php

    ?????? $number = 1234.5678 ;

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

    ?>

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

    ?

    關于此次 php 學習,是項目用 php ,所以我學習 php ,剛開始沒有想到 php 有那么強大。隨后發現其非常強大,但是學習筆記也不打算繼續。只是以后在 php 中遇到什么問題,準備 php 手冊隨時查閱。

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

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914354
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 亚洲kkk4444在线观看| 亚洲AV网站在线观看| 亚洲高清无码专区视频| 亚洲不卡中文字幕| 成年女人免费视频播放体验区| 亚洲人成电影青青在线播放| 麻豆高清免费国产一区| 亚洲国产成人九九综合| 久久久久国产精品免费免费搜索| 亚洲综合中文字幕无线码| 成年丰满熟妇午夜免费视频| 亚洲国产精品无码中文lv| 青青草国产免费久久久下载| 亚洲国产成人无码AV在线 | 精品熟女少妇aⅴ免费久久| 久久亚洲AV无码西西人体| 在线观看片免费人成视频无码| 久久久久亚洲AV片无码| 免费h片在线观看网址最新| 亚洲丁香婷婷综合久久| 亚洲高清视频一视频二视频三| 国产成年无码久久久免费| 亚洲精品综合久久中文字幕| 成人毛片18女人毛片免费| 猫咪免费人成在线网站| 久久久久无码精品亚洲日韩| 1000部夫妻午夜免费| 亚洲av无码一区二区三区在线播放 | 精品视频一区二区三区免费| 久久久婷婷五月亚洲97号色| 久久天天躁狠狠躁夜夜免费观看| 亚洲大尺度无码无码专线一区| 国产成人精品曰本亚洲79ren| 午夜视频免费在线观看| 亚洲熟女综合色一区二区三区| 亚洲AV成人潮喷综合网| 99xxoo视频在线永久免费观看| 亚洲人成网站999久久久综合| 久久亚洲精品无码观看不卡| 在线视频精品免费| 免费无遮挡无码视频在线观看 |