PHP學習系列(1)——字串處理函數(3),php函數_PHP教程

來源:互聯網
上載者:User

PHP學習系列(1)——字串處理函數(3),php函數


11、crc32() Function Compute一個字串的 crc32 多項式。產生 string 參數的 32 位迴圈冗餘校正碼多項式。該函數可用於驗證資料的完整性。

文法:crc32(string)

注意:由於 PHP 的整數是帶符號的,許多 crc32 校正碼將返回負整數,因此您需要使用 sprintf() 或 printf() 的 "%u" 格式符來擷取表示無符號 crc32 校正碼的字串。

例子 1

在本例中,我們將在使用以及不使用 "%u" 格式符的情況下,輸出 crc32() 的結果(注意結果是相同的):

php$str = crc32("Hello world!");echo 'Without %u: '.$str."
";echo 'With %u: ';printf("%u",$str);?>

輸出:

Without %u: 461707669With %u: 461707669
例子 2

在本例中,我們將在使用以及不使用 "%u" 格式符的情況下,輸出 crc32() 的結果(注意結果是不相同的):

php$str = crc32("Hello world.");echo 'Without %u: '.$str."
";echo 'With %u: ';printf("%u",$str);?>

輸出:

Without %u: -1959132156With %u: 2335835140

12、crypt() 函數返回使用 DES、Blowfish 或 MD5 加密的字串。在不同的作業系統上,本函數的行為不同,某些作業系統支援一種以上的演算法類型。在安裝時,PHP 會檢查什麼演算法可用以及使用什麼演算法。

文法:crypt(str,salt)

salt參數可選。用於增加被編碼字元數目的字串,以使編碼更加安全。如果未提供 salt 參數,則每次調用該函數時會隨機產生一個。

確切的演算法依賴於 salt 參數的格式和長度。

下面是與 crypt() 函數一起使用的一些常量。在安裝時,由 PHP 設定這些常量:

  • [CRYPT_SALT_LENGTH]
  • [CRYPT_STD_DES]
  • [CRYPT_EXT_DES]
  • [CRYPT_MD5]
  • [CRYPT_BLOWFISH]

注意:解密演算法是沒有的,這是一種單向加密方法

在本例中,我們將測試不同的演算法:

phpif (CRYPT_STD_DES == 1){echo "Standard DES: ".crypt("hello world")."\n<br />";}else{echo "Standard DES not supported.\n<br />";}if (CRYPT_EXT_DES == 1){echo "Extended DES: ".crypt("hello world")."\n<br />";}else{echo "Extended DES not supported.\n<br />";}if (CRYPT_MD5 == 1){echo "MD5: ".crypt("hello world")."\n<br />";}else{echo "MD5 not supported.\n<br />";}if (CRYPT_BLOWFISH == 1){echo "Blowfish: ".crypt("hello world");}else{echo "Blowfish DES not supported.";}?>

輸出類似(依賴於作業系統):

Standard DES: $1$r35.Y52.$iyiFuvM.zFGsscpU0aZ4e. Extended DES not supported. MD5: $1$BN1.0I2.$8oBI/4mufxK6Tq89M12mk/ Blowfish DES not supported.
13、explode() 函數把字串分割為數組。
文法:explode(separator,string,limit)
說明:本函數返回由字串組成的數組,其中的每個元素都是由 separator 作為邊界點分割出來的子字串。
separator 參數不能是Null 字元串。如果 separator 為空白字串(""),explode() 將返回 FALSE。
如果 separator 所包含的值在string 中找不到,那麼 explode() 將返回包含 string 中單個元素的數組。如果設定了 limit 參數,
則返回的數組包含最多 limit 個元素,而最後那個元素將包含 string 的剩餘部分。如果 limit 參數是負數,則返回除了最後的 -limit 個元素外的所有元素。
此特性是 PHP 5.1.0 中新增的。
注意:參數 limit 是在 PHP 4.0.1 中加入的。由於曆史原因,雖然 implode() 可以接收兩種參數順序,但是 explode() 不行。
你必須保證 separator 參數在 string 參數之前才行。

例子:在本例中,我們將把字串分割為數組:

php$str = "Hello world. It's a beautiful day.";print_r (explode(" ",$str));?>

輸出:

Array([0] => Hello[1] => world.[2] => It's[3] => a[4] => beautiful[5] => day.)
 
14、fprintf() 函數把格式化的字串寫到指定的輸出資料流(例如:檔案或資料庫)。

該函數返回被寫字串的長度。

文法
fprintf(stream,format,arg1,arg2,arg++)

stream——可選。規定在哪裡寫/輸出字串。

format——必需。轉換格式。

arg1——必需。規定插到 format 字串中第一個 % 符號處的參數。

arg2——可選。規定插到 format 字串中第二個 % 符號處的參數。

arg++——可選。規定插到 format 字串中第三、四等等 % 符號處的參數。

說明:參數 format 是轉換的格式,以百分比符號 ("%") 開始到轉換字元結束。下面的可能的 format 值:
  • %% - 返回百分比符號
  • %b - 位元
  • %c - 依照 ASCII 值的字元
  • %d - 帶符號十進位數
  • %e - 可續計數法(比如 1.5e+3)
  • %u - 無符號十進位數
  • %f - 浮點數(local settings aware)
  • %F - 浮點數(not local settings aware)
  • %o - 八位元
  • %s - 字串
  • %x - 十六進位數(小寫字母)
  • %X - 十六進位數(大寫字母)

arg1, arg2, ++ 等參數將插入到主字串中的百分比符號 (%) 符號處。該函數是逐步執行的。在第一個 % 符號中,插入 arg1,在第二個 % 符號處,插入 arg2,依此類推。

提示和注釋

注釋:如果 % 符號多於 arg 參數,則您必須使用預留位置。預留位置被插入 % 符號之後,由數字和 "\$" 組成。請參見例子 3。

提示: 相關函數: printf()、 sprintf()、 vfprintf()、 vprintf() 以及 vsprintf()。

例子

例子 1
fprintf($file,"%s world. Day number %u",$str,$number);?>

輸出:

27

以下文本將寫入 "test.txt":

Hello world. Day number 123
例子 2
fprintf($file,"%f",$number);?>

輸出:

123.000000
例子 3

使用預留位置:

fprintf($file,"With 2 decimals: %1\$.2f\nWith no decimals: %1\$u",$number);?>

以下文本將寫入 "test.txt":

With 2 decimals: 123.00With no decimals: 123

15、hebrev() 函數把希伯來文本從右至左的流轉換為左至右的流。只有 224 至 251 之間的 ASCII 字元,以及標點符號受到影響。

文法:hebrev(string,maxcharline)

maxcharline——規定每行的最大字元數。如果可能,hebrev() 將避免把單詞斷開。

說明:hebrev() 和 hebrevc() 可以把希伯來邏輯文本轉換為希伯來可見文本。希伯來可見文本不需要特殊的右至左字元支援,這使它對於在 web 上顯示希伯來文本很有用處。



php 怎處理字串

大家通過對PHP的學習,可以運用這一進階語言建立一個效能較高的網站。對於初學者來說,對於PHP字串mbstring還是比較陌生的,下面我們就來介紹一下PHP字串mbstring的具體應用。

多國語言並存就意味著多位元組,PHP內建的字串長度函數strlen無法正確處理中文字串,它得到的只是字串所佔的位元組數。對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是1~3倍的差異了。

採用PHP字串mbstring可以較好地解決這個問題。mb_strlen的用法和strlen類似,只不過它有第二個選擇性參數用於指定字元編碼。例如得到UTF-8的字串$str長度,可以用mb_strlen($str,’UTF-8′)。如果省略第二個參數,則會使用PHP的內部編碼。內部編碼可以通過mb_internal_encoding()函數得到,設定有兩種方式:

1. 在php.ini中設定mbstring.internal_encoding = UTF-8

2. 調用mb_internal_encoding(”GBK”)

除了PHP字串mbstring,還有很多切割函數,其中mb_substr是按字來切分字元,而mb_strcut是按位元組來切分字元,但是都不會產生半個字元的現象。而且從函數切割對長度的作用也不同,mb_strcut的切割條件是小於strlen, mb_substr是等於strlen,看下面的例子,

< ? $str = ‘我是一串比較長的中文-www.jefflei.com’; echo “mb_substr:” . mb_substr($str, 0, 6, ‘utf-8′); echo ” “; echo “mb_strcut:” . mb_strcut($str, 0, 6, ‘utf-8′); ?>

輸出如下:

mb_substr:我是一串比較

mb_strcut:我是

需要注意的是,PHP字串mbstring並不是PHP核心函數,使用前需要確保在php編譯模組時加入mbstring的支援:

(1)編譯時間使用–enable-mbstring

(2)修改/usr/local/lib/php.inc

default_charset = “zh-cn”

mbstring.language = zh-cn

mbstring.internal_encoding =zh-cn

PHP字串mbstring類庫內容比較多,還包括mb_ send_ mail 之類的email處理函數等
 

php 字串加1 是否有直接函數?或代碼寫法

想指出的是樓主這種“在字串上做算術運算”的需求是比較扭曲的,
即使實現,從效能效率的角度是非常低下。個人沒有看出任何實用和理論意義。
可以看成2部分
字母部分,為26進位(如果字元集包括中文將成為幾萬進位),a=1...z=26 有z+a=26+1=aa 接受10進位加法輸入
數字部分,為10進位,9+1=10,

而且還缺少對“a999+1後是否進位?怎麼進位?”進行說明
結果有多個可能
1、不進位。a999+1得a000 ,
2、僅10進位部分進位。a999+1得a1000
2、整體進位。a999+1得b000

需要說明這點後才可能寫出實現
 

http://www.bkjia.com/PHPjc/890821.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/890821.htmlTechArticlePHP學習系列(1)——字串處理函數(3),php函數 11、crc32() Function Compute一個字串的 crc32 多項式。產生 string 參數的 32 位迴圈冗餘校正碼...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.