在PHP的字符串處理時,我們常常會使用到substr函數。它可以在一個字符串中選擇出一個子字符串,并且返回給我們。但是,substr有一個比較鮮為人知的特性,就是可以使用負數作為參數從字符串結尾開始倒數計算。
舉個例子,針對字符串 "Hello World",我們可以使用 substr($str, 0, 5) 來選擇前五個字符 "Hello",也可以使用 substr($str, -5) 來選擇最后五個字符 "World"。
這么強大的功能不經常被提及,可能是因為它有些許奇怪的使用方法和不太直觀的表現。
在使用負數做參數時,substr將會從字符串的結尾開始倒數計算,將負數參數加上字符串總長度后再做正數計算。以 "Hello World" 為例,當我們使用 substr($str, -5) 時,最后的字符串長度是11,因此負數參數 -5 實際上計算成了 11-5=6,即選擇第6個字符"World"。
反過來思考,當我們想要從字符串開頭的第 X 個字符開始截取 Y 個字符時,我們也可以使用從結尾倒數計算的方式。比如,從開頭第7個字符開始截取,一直截取到字符串的結尾,可以這么寫:substr($str, -4)。因為字符串總長11,所以從結尾開始第4個字符實際上是從開頭開始第7個字符。
需要注意的是,如果負數參數的絕對值大于字符串總長度,如 substr($str, -20),則會返回一個空字符串。另外,substr函數在PHP 7.1及以上的版本中已經被標記為過時(deprecated),推薦使用mb_substr函數取代它的功能。
最后,可能有些朋友會問,為什么要使用負數做參數呢?實際上,我們可以利用它來方便地獲取字符串中的部分內容,比如文件路徑中的文件名稱,或者URL中的域名等。我們只需要根據字符串的結尾倒數計算選中部分的位置,便能夠快速準確地提取出需要的內容。
在實際開發中,substr的使用非常普遍,而負數參數的特性則可以大大增強它的實用性。希望本文的講解能夠對大家有所啟示。
舉個例子,針對字符串 "Hello World",我們可以使用 substr($str, 0, 5) 來選擇前五個字符 "Hello",也可以使用 substr($str, -5) 來選擇最后五個字符 "World"。
這么強大的功能不經常被提及,可能是因為它有些許奇怪的使用方法和不太直觀的表現。
在使用負數做參數時,substr將會從字符串的結尾開始倒數計算,將負數參數加上字符串總長度后再做正數計算。以 "Hello World" 為例,當我們使用 substr($str, -5) 時,最后的字符串長度是11,因此負數參數 -5 實際上計算成了 11-5=6,即選擇第6個字符"World"。
反過來思考,當我們想要從字符串開頭的第 X 個字符開始截取 Y 個字符時,我們也可以使用從結尾倒數計算的方式。比如,從開頭第7個字符開始截取,一直截取到字符串的結尾,可以這么寫:substr($str, -4)。因為字符串總長11,所以從結尾開始第4個字符實際上是從開頭開始第7個字符。
需要注意的是,如果負數參數的絕對值大于字符串總長度,如 substr($str, -20),則會返回一個空字符串。另外,substr函數在PHP 7.1及以上的版本中已經被標記為過時(deprecated),推薦使用mb_substr函數取代它的功能。
最后,可能有些朋友會問,為什么要使用負數做參數呢?實際上,我們可以利用它來方便地獲取字符串中的部分內容,比如文件路徑中的文件名稱,或者URL中的域名等。我們只需要根據字符串的結尾倒數計算選中部分的位置,便能夠快速準確地提取出需要的內容。
在實際開發中,substr的使用非常普遍,而負數參數的特性則可以大大增強它的實用性。希望本文的講解能夠對大家有所啟示。
上一篇css脫離文檔流什么意思
下一篇css脫標是啥