2016-08-19 3 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() 1時間呼び出す必要がありに関する唯一のものである場合:

は、コメントあたり
$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ファイルの文字を各行を繰り返して上書きすることなく文字を置き換える方法があることを期待していました。 –

関連する問題