php中的字符串操作

字符串介紹

一個字符串 通過下面的3種方法來定義:

1、單引號
2、雙引號
3、heredoc語法結構

基本用法如下,後面的節還會詳細進行介紹使用技巧,這裏只介紹用法:

單引號定義的字符串:$hello = 'hello world';

雙引號定義的字符串:$hello = "hello world";

heredoc語法結構定義的字符串:

$hello = <<<TAG
hello world
TAG;

單引號和雙引號的區別

在PHP中,字符串的定義可以使用英文單引號’ ‘,也可以使用英文雙引號” “。

但是必須使用同一種單或雙引號來定義字符串,如:‘Hello World”和”Hello World’爲非法的字符串定義。

單引號和雙引號到底有啥區別呢?

PHP允許我們在雙引號串中直接包含字串變量。

而單引號串中的內容總被認爲是普通字符。

比如:

$str='hello';
echo "str is $str"; //運行結果: str is hello
echo 'str is $str'; //運行結果: str is $str

字符串的連接

PHP中兩個字符串如何連接呢,比如我有個字符串hello=hello, world=’ world’,我想將這兩個字符串連接在一起,跟世界打個招呼。

PHP中用英文的點號.來連接兩個字符串。

好了,我們連接一下,前面提到的兩個字符串跟世界打個招呼吧:)

$hello='hello';

$world=' world';

$hi = $hello.$world;

echo $hi;//我們可以用echo函數輸出一下這個字符串連接。

去除字符串首尾的空格

PHP中有三個函數可以去掉字符串的空格

trim去除一個字符串兩端空格。
rtrim是去除一個字符串右部空格,其中的r是right的縮寫。
ltrim是去除一個字符串左部空格,其中的l是left的縮寫。

例子如下:

echo trim(" 空格 ")."<br>";
echo rtrim(" 空格 ")."<br>";
echo ltrim(" 空格 ")."<br>";

獲取字符串的長度

php中有一個神奇的函數,可以直接獲取字符串的長度,這個函數就是strlen()。

例子如下:

$str = 'hello';
$len = strlen($str);
echo $len;//輸出結果是5

strlen函數對於計算英文字符是非常的擅長,但是如果有中文漢字,要計算長度該怎麼辦?

可以使用mb_strlen()函數獲取字符串中中文長度。

例子如下:

$str = "我愛你";
echo mb_strlen($str,"UTF8");//結果:3,此處的UTF8表示中文編碼是UTF8格式,中文一般採用UTF8編碼

字符串的截取

1、英文字符串的截取函數substr()

函數說明:substr(字符串變量,開始截取的位置,截取個數)

例如:

$str='i love you';
//截取love這幾個字母
echo substr($str, 2, 4);//爲什麼開始位置是2呢,因爲substr函數計算字符串位置是從0開始的,也就是0的位置是i,1的位置是空格,l的位置是2。從位置2開始取4個字符,就是love。

2、中文字符串的截取函數mb_substr()

函數說明:mb_substr(字符串變量,開始截取的位置,截取個數, 網頁編碼)

例如:

$str='我愛你,中國';

//截取中國兩個字

echo mb_substr($str, 4, 2, 'utf8');//爲什麼開始位置是4呢,和上一個例子一樣,因爲mb_substr函數計算漢字位置是從0開始的,也就是0的位置是我,1的位置是愛,4的位置是中。從位置4開始取2個漢字,就是中國。中文編碼一般是utf8格式

查找字符串

如果有一個字符串$str = ‘I want to study at imooc’;,怎麼樣找到其中的imooc在哪個位置呢?

查找字符串,我們需要用到PHP的查找字符串函數strpos();

函數說明:strpos(要處理的字符串, 要定位的字符串, 定位的起始位置[可選])

例子:

$str = 'I want to study at icy';
$pos = strpos($str, 'icy');
echo $pos;//結果顯示19,表示從位置0開始,icy在第19個位置開始出現
$str = '非常滿意sdfsdfs';
$find = '非常滿意';
strpos($str,$find)

替換字符串

如果有一個字符串$str = ‘I want to learn js’;,怎麼樣將js字符替換成你想學的php字符呢?

替換字符串,我們需要用到PHP的替換函數str_replace()

函數說明:str_replace(要查找的字符串, 要替換的字符串, 被搜索的字符串, 替換進行計數[可選])

例子:

$str = 'I want to learn js';
$replace = str_replace('js', 'php', $str);
echo $replace;//結果顯示I want to learn php

格式話字符串

如果有一個字符串$str = ‘99.9’;,怎麼樣使這個字符串變成99.90呢?

我們需要用到PHP的格式化字符串函數sprintf()

函數說明:sprintf(格式, 要轉化的字符串)

返回:格式化好的字符串

例子:

$str = '99.9';
$result = sprintf('%01.2f', $str);
echo $result;//結果顯示99.90

解釋下,上面例子中的格式

這個 %01.2f 是什麼意思呢?

1、這個 % 符號是開始的意思,寫在最前面表示指定格式開始了。 也就是 “起始字符”, 直到出現 “轉換字符” 爲止,就算格式終止。
2、跟在 % 符號後面的是 0, 是 “填空字元” ,表示如果位置空着就用0來填滿。
3、在 0 後面的是1,這個 1 是規定整個所有的字符串佔位要有1位以上(小數點也算一個佔位)。
如果把 1 改成 6,則 result099.9099.90560滿4 str 的值爲9.234,則 result9.23.42 str 的值中,小數點後面佔了3位,所以,尾數4被去掉了,只剩下 23。
5、最後,以 f “轉換字符” 結尾。

填空字符。0 的話表示空格填 0;
空格是默認值,表示空格就放着。 對齊方式。默認值爲向右對齊,負號表向左對齊。 字段寬度。爲最小寬度。
精確度。指在小數點後的浮點數位數。 PHP函數sprintf()的類型,見下表 % 印出百分比符號,不轉換。

函數種類: 資料處理
b 整數轉成二進位。
c 整數轉成對應的 ASCII 字符。
d 整數轉成十進位。
f 倍精確度數字轉成浮點數。
o 整數轉成八進位。
s 整數轉成字符串。
x 整數轉成小寫十六進位。
X 整數轉成大寫十六進位。

PHP函數sprintf()的使用範例

   <? 

    $str='icy001';
    //$str 格式化爲9位的字符串左邊補零 
    $formatted = sprintf ("%0-9s", $str);  
    // 此時變量 $ formatted 值爲 "icy001000"  
    ?>   

字符串的合併與分割

1、php字符串合併函數implode()

函數說明:implode(分隔符[可選], 數組)

返回值:把數組元素組合爲一個字符串

例子:

$arr = array('Hello', 'World!');
$result = implode('', $arr);
print_r($result);//結果顯示Hello World!

2、php字符串分隔函數explode()

函數說明:explode(分隔符[可選], 字符串)

返回值:函數返回由字符串組成的數組

例子:

$str = 'apple,banana';
$result = explode(',', $str);
print_r($result);//結果顯示array('apple','banana')

字符串的轉義

php字符串轉義函數addslashes()

函數說明:用於對特殊字符加上轉義字符,返回一個字符串

返回值:一個經過轉義後的字符串

例子:

$str = "what's your name?";
echo addslashes($str);//輸出:what\'s your name?

PHP addcslashes() 函數
定義和用法
addcslashes() 函數在指定的字符前添加反斜槓。
語法
addcslashes(string,characters)參數 描述
string 必需。規定要檢查的字符串。
characters 可選。規定受 addcslashes() 影響的字符或字符範圍。
提示和註釋
註釋:在對 0,r,n 和 t 應用 addcslashes() 時要小心。在 PHP 中,\0,\r,\n 和 \t 是預定義的轉義序列。
實例
例子 1
在本例中,我們要向字符串中的特定字符添加反斜槓:

<?php
$str = "Hello, my name is John Adams.";
echo $str;
echo addcslashes($str,'m');
echo addcslashes($str,'J');
?>
輸出:
Hello, my name is John Adams.
Hello, \my na\me is John Ada\ms.
Hello, my name is \John Adams.

而函數addslashes()的使用:
PHP addslashes() 函數
定義和用法
addslashes() 函數在指定的預定義字符前添加反斜槓。
這些預定義字符是:
•單引號 (‘)
•雙引號 (“)
•反斜槓 ()
•NULL
語法
addslashes(string)參數 描述
string 必需。規定要檢查的字符串。
提示和註釋
提示:該函數可用於爲存儲在數據庫中的字符串以及數據庫查詢語句準備合適的字符串。
註釋:默認情況下,PHP 指令 magic_quotes_gpc 爲 on,對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。不要對已經被 magic_quotes_gpc 轉義過的字符串使用 addslashes(),因爲這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。
例子
在本例中,我們要向字符串中的預定義字符添加反斜槓:

<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>
輸出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.他們都有對應的去除他們添加的反斜槓的方法,分別是:stripcslashes()和stripslashes()。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章