2016-08-19 52 views
0

我正在嘗試在上傳的csv的命中字符之前查找我的輸出方法。正如我正在寫的那樣,我通常會這樣做,我覺得我的解決方案會涉及更多的步驟。所以,**我問是否有更好的方法在csv文件中查找°符號並將其替換爲°。下面是我目前正在錄取辦法是什麼我:在csv值上執行str_replace的更好方法

$file  = get_attached_file($csv_file); //set file_path 
$file_array = array(); //declare an array so it gets key and values approriately 
$array_key = 'angle'; //define where the degree symbol is to be added 
$file_array = str_getcsv(file_get_contents($file)); 
if(array_key_exists($array_key, $file_array)) { 
    foreach ($file_array as $key => $value) { 
     $degree = '°'; 
     $replace = '&#176'; 
     $value = str_replace($degree, $replace, $value); 
    } 
} 

我的問題是,我豈不然後通過陣列中的每個值必須循環,把它放回一個CSV那麼這就需要我定義什麼當某些文件沒有我想要替換的angle列時,需要輸出列。
此外,php將能夠找到並解碼°符號。

+0

你只希望刪除 「°」 符號,或任何特殊字符?如果你不在乎,你可以使用html_entities爲所有字符串編碼一次...... – Random

+0

只是學位符號 –

+0

在你的字符串中是否還有其他特殊字符? – Random

回答

0

如果更換度的符號是關係你那麼這將是從微觀優化的角度來看更有效率,因爲你可以跳過調用foreach(){}環,只需要調用str_replace()一個時間的唯一的事:

按照意見
$file_array = str_getcsv(str_replace('°', '°', file_get_contents($file))); 

更新:

// Read the CSV file into a PHP variable as a string 
// Replace all ° with ° 
// Overwrite the original file with the new string 
file_put_contents($file, str_replace('°', '°', file_get_contents($file))); 
+0

@MonkeyZesus這並不完全讓我在那裏。我仍然需要把結果放回(*在我的問題底部*)。如果可能的話,我想保留相同的csv文件上傳並在必要時追加這些字符。除非,我誤以爲會返回一個數組,我的函數輸出將尋找一個csv –

+0

@AustinMauldin我不完全理解你的所有要求。您是否希望在上傳並保存到服務器時修復該文件,以便您只需一次更換學位符號?或者,您是否希望僅在用戶希望查看/下載數據時才更換學位符號?另外,你是什麼意思的「追加」?根據你的問題,你**正在取代**一個與其實體等同的角色。 – MonkeyZeus

+0

該文件轉到另一個開發人員將csv文件作爲參數的功能。我希望有一種方法可以替代csv文件中的字符,而不必通過迭代每行來覆蓋它。 –