我正在嘗試從數組映射中每行的末尾刪除兩個字符(如果它們存在)。這些字符并不總是存在所以我正在嘗試轉換Array ( [0] => C7130A-B [1] => RB2-8120 [2] => RM1-1082-000B [3] => 0950-4768B [4] => C7130B )到Array ( [0] => C7130A [1] => RB2-8120 [2] => RM1-1082-000 [3] => 0950-4768 [4] => C7130 )基本上我試圖從最后消除 B 或 -B ,我找到了一種在字符串上執行此操作但不能在數組上執行此操作的方法。我已經嘗試了很多我在 Stack 上找到的選項,但遺憾的是沒有運氣。function cleanit($s) { return rtrim($s, "B");}$words = strtoupper($words);$toBeFound = explode(PHP_EOL, $words);$war = array_map('cleanit', $toBeFound);echo('Begin<br>');print_r($war); echo('<br>End');到目前為止,我得到的最好結果是從數組中的最后一項中刪除 B(或 -B)。這是這段代碼的結果。Array ( [0] => C7130A-B [1] => C7130B [2] => RM1-1082-000B [3] => 0950-4768B [4] => C7130 )
2 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
這是提供所需內容的文檔。
代碼示例:
function cleanit($s) {
// return rtrim($s, "B");
$b = strrpos($s,"B");
$-b = strrpos($s,"-B");
if($-b > -1) return str_replace($s,"-B");
if($b > -1) return str_replace($s,"B");
return $s;
}

心有法竹
TA貢獻1866條經驗 獲得超5個贊
您可以像這樣將正則表達式與 preg_replace 一起使用($ 僅用于字符串末尾的刪除):
$myArray = array('C7130A-B', 'RB2-8120', 'RM1-1082-000B', '0950-4768B', 'C7130B');
function cleanit($val)
{
return preg_replace('/(-B|B)$/','',$val);
}
$resultArray = array_map('cleanit', $myArray);
print_r($resultArray);
Array ( [0] => C7130A [1] => RB2-8120 [2] => RM1-1082-000 [3] => 0950-4768 [4] => C7130 )
- 2 回答
- 0 關注
- 91 瀏覽
添加回答
舉報
0/150
提交
取消