在PHP 中,字符串操作是常見且重要的任務之一。很多時候,我們需要截取一個字符串的某一部分。 strrpos和substr是兩個非常實用的PHP 函數,它們可以結合使用來實現從字符串的最後一個字符位置開始,截取直到字符串末尾的內容。
strrpos函數用於查找某個字符或子字符串在字符串中最後一次出現的位置。該函數返回該字符或子字符串的偏移量(即從字符串開始位置到找到的字符位置的距離),如果未找到則返回false 。
<span><span><span class="hljs-title function_ invoke__">strrpos</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$haystack : 要搜索的字符串。
$needle : 要查找的字符或子字符串。
$offset : 可選,偏移量,指定從哪裡開始查找,默認為0。
substr函數用於從字符串中提取子字符串。它通過給定起始位置和長度來截取指定的部分。
<span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = ?): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$string : 輸入的原始字符串。
$start : 截取的起始位置,可以是正數或負數,負數表示從字符串末尾開始計算。
$length : 可選,截取的長度,如果省略,則一直截取到字符串末尾。
現在我們要結合strrpos和substr函數來截取字符串的內容,具體的需求是:從字符串中最後一個出現指定字符的位置開始,截取到字符串末尾。
假設我們有一個字符串$str = "apple, banana, cherry, apple, orange" ,我們希望從最後一個"apple" 出現的位置開始截取到末尾。首先使用strrpos查找最後一個"apple" 在字符串中的位置。
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple, banana, cherry, apple, orange"</span></span><span>;
</span><span><span class="hljs-variable">$last_pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"apple"</span></span><span>); </span><span><span class="hljs-comment">// 查找最後一個 "apple" 的位置</span></span><span>
</span></span>
$last_pos現在保存的是"apple" 在字符串中的最後一次出現的位置,即24 。
接下來,我們使用substr函數從$last_pos開始截取,直到字符串末尾。
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$last_pos</span></span><span>); </span><span><span class="hljs-comment">// 從最後一個 "apple" 的位置開始截取</span></span><span>
</span></span>
此時, $result的值為"apple, orange" ,即從字符串最後一個"apple" 到末尾的內容。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 原始字符串</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"apple, banana, cherry, apple, orange"</span></span><span>;
</span><span><span class="hljs-comment">// 查找最後一個 "apple" 的位置</span></span><span>
</span><span><span class="hljs-variable">$last_pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"apple"</span></span><span>);
</span><span><span class="hljs-comment">// 判斷是否找到該字符</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$last_pos</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// 從最後一個 "apple" 開始截取到字符串末尾</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$last_pos</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"截取的內容是: "</span></span><span> . </span><span><span class="hljs-variable">$result</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"未找到指定字符"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span><span class="hljs-section">截取的內容是: apple, orange</span></span><span>
</span></span>
通過結合使用strrpos和substr函數,我們可以輕鬆地從字符串中獲取從最後一次出現某個字符或子字符串的位置開始,到字符串末尾的內容。 strrpos幫助我們找到最後一個字符的位置,而substr則用於從該位置提取剩餘的字符串內容。