2016-02-04 55 views
1

我正在使用Laravel中的翻譯,並且我有幾個數組,其中包含映射到其對應翻譯的翻譯鍵。我需要刪除任何含有--的翻譯,並將其替換爲空字符串。我已經在同一個函數中做了一些其他的str替換,所以我可能會打斷這個函數。當數值已被設置時,爲key數組賦值一個新值

這裏是整個函數的樣子:

public function getWithContext($locale, $context) 
{ 
    $this->registerContext($context); 

    $contextKey = "{$locale}.{$context}"; 

    if ($this->has($contextKey)) return $this->get($contextKey); 

    $out = []; 

    $data = $this->get($locale); 

    foreach ($data as $key => $value) { 
     if (preg_match("/^({$context}\.)/", $key)) { 
      $k  = str_replace("{$context}.", "", $key); 
      $out[$k] = ($value == "—-") ? "" : $value; 
     } 
    } 

    if (!empty($out)) { 
     $this->put($contextKey, new Collection($out)); 
    } 

    return $out; 
} 

我試圖讓行$out[$k] = ($value == "--") ? "" : $value;具體工作。

+0

什麼不起作用?你有錯誤,還是分配不工作?你有什麼'$ out' var? – Gwendal

+0

我沒有收到錯誤,只是沒有像我預期的那樣將破折號改爲空字符串。我發佈了以下答案中發生的事情。感謝您的詢問並嘗試提供幫助。 – kemosabe

回答

1

不知道這有什麼關係,但在你的問題,你提到的字符串"--",但在你的代碼串是"—-"具有不同的字符爲第一個破折號

+0

這就是問題! – kemosabe

0

我找到了解決我的問題。通過我的鍵盤輸入的破折號的編碼與服務器看到的不同。因此,我不得不將服務器中的值複製到代碼中,並且完美地工作。