日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 入门 - 3.字符串

發布時間:2024/1/17 php 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 入门 - 3.字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 引用字符串常量
      • 變量插值
        • 直接使用:
        • 用大括號:
      • 單引號括起來的字符串
      • here文檔
    • 輸出字符串
      • echo
      • print
      • printf()
      • print_r 和 var_dump()
    • 整理字符串
      • 刪除空白符號
      • 改變大小寫
    • 編碼和轉義
      • HTML
        • 對**所有**特殊字符進行實體引用
        • 只對 HTML 語法字符進行引用
        • 刪除 HTML 標簽
        • 提取元標簽(meta tag)
      • URL
        • RFC 3986 編碼和解碼
        • 查詢字符串編碼
      • SQL
      • C語言字符串編碼
    • 比較字符串
      • 精確比較
        • 自然排序與字典序之間的區別
      • 近似比較
    • 處理和查找字符串
      • 子串
      • 其他字符串函數
      • 分解字符串
      • 字符串查找函數
        • 解析 URL

引用字符串常量

PHP 中可以使用三種方法來引入字符串的字面量:單引號、雙引號和 UNIX Shell 衍生出來的 here 文檔格式( heredoc )。不同之處在于是否識別特殊的轉義序列(對字符串進行編碼和變量插值)和是否對變量進行解析

變量插值

在字符串中用變量的值來替換變量名。

直接使用:

$who = 'Kilroy'; $where = 'here'; echo "$who was $where"; // Kilroy was here

用大括號:

$n = 12; echo "You are the {$n}th person"; // You are the 12th person

和一些 shell 環境不同,PHP 中的字符串不會重復解析,只處理在雙引號字符串中的解析,然后把其結果作為字符串的值。

$bar = 'this is not printed'; $foo = '$bat'; print("$foo"); // $bar

單引號括起來的字符串

不能插值。除了 \' 和 \\ 可以被轉義,其他任何的反斜杠只被解析成一個反斜杠。

here文檔

heredoc 由 <<< 和 標識符組成。并且其中的雙引號和單引號被跳過,空白符被保留。

$dialogue = <<< NoMore"It's not going to happen!" she fumed. NoMore; echo $dialogue; // 輸出: "It's not going to happen!" she fumed.

輸出字符串

echo

echo 不是一個函數(它是一個語言結構),因此你不一定要使用小括號來指明參數,單引號,雙引號都可以。如果你想給 echo 傳遞多個參數, 那么就不能使用小括號。

另外,在 echo 中拼接字符串,要考慮 , 和 . 運算符的優先級。 , 的優先級非常的低,所以不需要圓括號保證優先級。 . 具有更高的優先級,為了正確性,必須使用圓括號。

echo "Sum: ", 1 + 2; // Sum: 3 echo "Hello ", isset($name) ? $name : "John Doe", "!"; // Hello John Doe! echo 'Sum: ' . (1 + 2); // Sum: 3 echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!'; // Hello John Doe!

echo 和 print 最主要的不同之處是,echo 接受參數列表,并且沒有返回值。

echo 是用來打印字符串的,所以用 echo 來打印數組會報錯。

print

print 實際上不是函數(而是語言結構),所以可以不用圓括號包圍參數列表。和 echo 最主要的區別: print 僅支持一個參數,并總是返回 1。

if (print("test")){ // testprint("It worked!"); // It worked! }

printf()

通過替換模板(即格式化字符串)中的值所生成的字符。它源自標準的 C 庫中的同名函數 printf()

printf(format[, $args[,...]]):int // 使用 printf("$.2f", 27.452); // 27.45

sprintf() 和 printf() 的參數相同,但是它只返回生成的字符串而不是打印出來。

print_r 和 var_dump()

兩者都是以易于理解的格式打印變量,相對來說 var_dump() 打印的變量更適合閱讀,它會顯示當前值的類型,顯示共有多少個元素,且還會自動加上換行符。

整理字符串

刪除空白符號

  • trim(string [, charlist]):string : 返回刪除了首尾空白符的字符串。
  • ltrim(string [, charlist]):string : 返回刪除了首部空白的字符串。
  • rtrim(string [, charlist]):string : 返回刪除了尾部空白的字符串。
  • 可選參數 charlist ,是可以指定要刪除的字符列表。

不指定 charlist ,默認刪除的字符為:

字符ASCII碼意義
" "0x20,32空格
“\t”0x09,9制表符
“\n”0x0A,10換行符
“\r”0x0D,13回車符
“\0”0x00,0空字節
“\x0B”0x0B,11縱向制表符

改變大小寫

  • strtolower(string):string : 將字符串轉換成大寫。
  • strtoupper(string):string : 將字符串轉換成小寫。

編碼和轉義

HTML

HTML 中的特殊字符以實體字符標識,如 &amp;(&) 和 &lt;(<)

所有特殊字符進行實體引用

htmlentities(string[, flags[, encoding[, double_encode]]]):string 將 HTML 字符轉換成對應的實體字符。

string 為輸入的字符,flags 為選擇哪種模式的轉換,encoding 為字符串的編碼, double_encode 為是否轉現有的 HTML 實體。

只對 HTML 語法字符進行引用

htmlspecialchars(string[, flags[, encoding[, double_encode]]]):string 參數與上面相同,只是對部分實體進行轉換:&(&amp;) "(&quot;) '(&apos;) <(&lt;) >(&gl;)

刪除 HTML 標簽

strip_tags(string[, allowable_tags]):string : 從字符串中刪除 HTML 標簽。

allowable_tags 來指定字符串中不被刪除的標簽。只用列出標簽的開始形式。

提取元標簽(meta tag)

get_meta_tags(filename|url[, use_include_path]):array : 從一個文件中提取所有的 meta 標簽的 content 屬性,返回一個數組。

將 use_include_path 設置為 TRUE 將使 PHP 嘗試按照 include_path 標準包含路徑中的每個指向去打開文件。只用于本地文件,不適用與 URL 。

URL

應該只對部分 URL 進行編碼:http://www.example.com/{這里進行編碼}

RFC 3986 編碼和解碼

  • rawurlencode(string):string : 編碼函數,除了-,_,. 之外的所有非字母數字字符都會被替換成百分號( % )后跟兩位進制數。
  • rawurldecode(string):string : 解碼函數。

查詢字符串編碼

  • urlencode(string):string :編碼函數
  • urldecode(string):string :解碼函數

與 PFC 3986 相比,唯一的區別在于將空格編碼成加號( + ),而不是 %20 。這兩個函數對生成查詢字符串很有幫助

SQL

在 SQL 中對查詢字符串進行轉義,只需將單引號、雙引號、空字符和反斜杠前面加上反斜杠即可

  • addslashes(string):string : 將單引號、雙引號、空字符和反斜杠前面加上反斜杠。
  • stripslashes(string):string : 將單引號、雙引號、空字符和反斜杠前面去掉反斜杠。

C語言字符串編碼

  • addcslashes(string,charlist):string : 以 C 語言風格使用反斜杠轉義 string 中的字符,其中 charlist 指定要轉義的字符范圍(從小到大,如:A..Z)。
  • stripcslashes(string):string : 返回去掉轉義后的字符串。

比較字符串

精確比較

== 比較之前會進行轉換,故:3 == '3',而 === 不進行轉換

對于 “PHP Rocks" < 5 ,這將是 正確的。

因為 “PHP Rocks” 被轉換成了 0 (因為字符串沒有以數字開頭)。所以比較要用到下面的函數。

  • strcmp(string,string):int : 以字典序來比較
  • strncasecmp(string,string):int : 先轉換成小寫,在進行字典序比較
  • strnatcasecmp(string,string):int : 以自然排序比較

自然排序與字典序之間的區別

自然排序字典序
pic1.jpgpic1.jpg
pic5.jpgpic10.jpg
pic10.jpgpic5.jpg
pic50.jpgpic50.jpg

近似比較

  • soundex(string):string : 生成一個字符串大致表示單詞在英語中如何發音。
  • metaphone(string[, phonemes]):string : 生成一個字符串大致表示單詞在英語中如何發音。比 soundex() 更加精確。其中指定 phonemes 來限制生成的字符串長度,默認為 0 ,也就是沒有限制。
  • similar_text(string1, string2[, &percentage]):int : 返回兩個字符串參數共有的個數,第三個參數是通過引用的方式,來計算共有字符百分比。注意,此算法復雜度為O(n3),且使用遞歸。
  • levenshtein(string1,string2[, cost_ins, cost_rep, cost_del]):int : 返回兩個字符串之間的編輯距離
    • 編輯距離:通過添加、替換和刪除操作能將 string1 轉換成 string2。如:levenshtein("cat","cot") 返回 1
    • 另外三個選項是指定插入、替換和刪除操作的次數,來查看函數的結果。

處理和查找字符串

子串

  • substr(string, start[, length]):string : 返回字符串 string 由 start 開始,長度為 length 的子串。

  • substr_count(haystack, needle[, offset[, length]]):int : 返回子字符串 needle 在字符串 haystack 中出現的次數。其中 offset 為偏移位置,length 為從偏移位置開始計算的長度。

  • substr_replace(string, replacement, start[, length]):mixed : 字符串 string 的副本中將由 start 和可選的 length 參數限定的子字符串使用 replacement 進行替換。另:start 可以為負數。如下例子:

    //設定 length 為 0 來實現無刪除的插入: echo substr_replace("good bye citizen", "kind ", 9, 0); // good bye kind citizen //設定替換串為 “” 來實現無插入的刪除: echo substr_replace("good bye kind citizen", "", 8; // good bye //如何在字符串開頭插入內容: echo substr_replace("good bye", "now it's time to say", , 0); // now it's time to say good bye

其他字符串函數

  • strrev(string):string : 返回 string 反轉后的字符串。
  • str_repeat(input, multiplier):string : 返回 input 重復 multiplier 此后的結果。

分解字符串

分解:explode(separator, string[, limit]):array : 返回由字符串組成的數組,每個元素都是 string 的一個子串,他們被字符串 separator 作為邊界點分割出來。

合并:implode(separator, array) : 用 separator 將一維數組連接成一個字符串。若只有字符串參數,連接的字符串將沒有分隔符,如:

$arr = array(1,2,3,4); echo implode($arr); // 1234

sscanf(string,format[, &...]):mixed : 按照模板來分解一個字符串。

字符串查找函數

  • strpos(haystack, needle[, offset = 0]):int : 返回 needle 在 haystack 中首次出現的位置。注意:如果 needle 出現在 haystack 的開頭,函數返回 0 。故我們在判斷的是否存在與字符串中,一定要用 === 符號來判斷是否找到指定的字符串。

  • strrpos() : 和上述參數一樣,只是返回最后一次出現的位置。

  • strstr(haystack, needle[, before_needle = FALSE]):string : 返回 hatstack 字符串從 needle 第一次出現的位置開始到 haystack 結尾的字符串。若指定 before_needle 為 TRUE ,則將返回 haystack 位置之前的部分。

  • stristr() : 不區分大小寫的 strstr() ,且參數一致。

  • strchr() : strstr() 的別名函數。

  • strtchr(haystack, needle):string : 返回 haystack 字符串中的一部分,以 needle 最后出現的位置開始,知道 haystack 末尾。注意:如果 needle 包含了不止一個字符,那么僅使用第一個字符。needle 如果為數字的話,則轉換成對應的 ascii 碼。

  • strspn(subject, mask[, start[, length]]):int 返回 subject 開頭包含多少個特定的 mask 字符。如下例:

    //判斷 $str 字符串是否為一個八進制數 function isOctal($str) {return strspn($str,'01234567') == strlen($str); }
  • strcspn(str1, str2[, start[, length]]):int : 返回 str1 中,所有字符都不存在與 str2 范圍的起始子字符串的長度。如:

    echo strcspn('hello','l'); // 2 hello 中 有兩個 l ,它默認匹配最后的字符,也就是下標為 3 的 l ,所以這里返回 2

解析 URL

parse_url(url):array : 返回一個由 URL 的各個成分組成的數組。

感謝你看到了這里。如果文章有錯誤,請評論指正,謝謝!

總結

以上是生活随笔為你收集整理的PHP 入门 - 3.字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。