簡體   English   中英

如何在 PHP 中使用帶有 array_map 的修剪

[英]How to use trim with array_map in PHP

我試圖從數組映射中的每行末尾(如果存在)刪除兩個字符。

這些字符並不總是存在

所以我正在嘗試轉換

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 )

這是提供您所需內容的文檔

代碼示例:

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;
}

您可以像這樣使用帶有 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 ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM