我想知道是否有辦法在特定點(在這種情況下,接近結尾)將字串插入另一個字串?例如:
$string1 = "item one, item two, item three, item four";
$string2 = "AND";
//do something fancy here
echo $string1;
輸出:
專案一、專案二、專案三和專案四
我需要一些關于花哨的字串作業部分的幫助。如果可能的話,基本上在最后一個“,”之后插入單詞。
uj5u.com熱心網友回復:
有很多方法可以做到這一點 - 但既然你特別指出“在最后一個之后,”,那么strrpos似乎是合適的:
// insert this line where you indicate 'do something fancy here'
$string1 = substr_replace($string1, " ".$string2, strrpos($string1,",") 1, 0);
找到最右邊的逗號并在
$string2其后插入一個位置(前面有一個空格)。最后一個引數表示要替換的子字串的長度,因此 a0表示“不替換任何內容,只插入”。
請注意添加到$string2. 顯然,您可以修改如何$string2初始化以包含空間并消除這部分。
uj5u.com熱心網友回復:
您可以為此使用 preg_replace,我發現它比其他字串操作方法更簡潔,并且如果您的用例應該更改,也更容易適應:
$string1 = "item one, item two, item three, item four";
$string2 = "AND";
$pattern = "/,(?!.*,)/";
$string1 = preg_replace($pattern, ", $string2", $string1);
echo $string1;
在哪里傳遞 preg_replace 正則運算式模式、替換字串和原始字串。preg_replace 不會修改原始字串,而是回傳一個新字串,因此您將設定$string1等于 preg_replace 的輸出。
模式:您可以使用任何分隔符來表示運算式的開始和結束。通常我會看到 / used*,因此運算式將是“/pattern/”,其中存在逗號和否定前瞻 (?!) 的模式,以查找后面沒有另一個逗號的逗號。沒有必要顯式宣告 $pattern。您可以直接在 preg_replace 引數中使用運算式,但有時將模式宣告與其使用分開會更容易一些(尤其是對于復雜模式)。
替換: preg_replace 將替換整個匹配項,因此您需要在替換文本前加上逗號(即將被替換)和空格。由于用雙引號括起來的變數是在字串中計算的,因此您將 $string2 放在引號內**。
目標:您只需將原始字串放在這里。
* 我更喜歡使用 ~ 作為我的分隔符,因為 / 在處理 url 時開始變得很麻煩,但你可以使用任何東西。
這是正則運算式模式的備忘單,但其中有很多浮動。如果需要,只需 google 正則運算式備忘單。
https://www.rexegg.com/regex-quickstart.html
此外,您還可以找到大量在線正則運算式測驗器。這是一個包含快速參考的內容,還允許您切換正則運算式引擎(有一些,有些可能與其他引擎略有不同):
https://regex101.com/
** 我更喜歡將變數包裝在花括號中,以更明確地表明我正在插入值,但它是可選的。那看起來像", {$string2}"
uj5u.com熱心網友回復:
您可以使用模式來匹配字串中的最后一個逗號,.*,然后使用它\K來忘記到目前為止匹配的內容。
在更換使用 AND
$string1 = "item one, item two, item three, item four";
$string2 = " AND";
$string1 = preg_replace("/.*,\K/", $string2, $string1);
echo $string1;
輸出
item one, item two, item three, AND item four
查看PHP 演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/418870.html
標籤:
