0

この関数を使用してデンマーク文字をutfに変換しようとしています

private function process_elements($element){
   $element=  strtolower ( trim ( $element ) );
   $element=  mysql_real_escape_string($element);
    return utf8_encode($element);
}

私の配列は、次のようなエンコーディングなしで使用されます:

Array ( [0] => Desktop [1] => imlive [2] => dk [3] => Danish [4] => Denmark [5] => http://www.google.dk/search?ie=UTF-8&oe=UTF-8&hl=da&q=imlive&adtest=on&gl=DK&glp=1&ip=0.0.0.0&pws=0&noj=1&nomo=1 [6] => ImLive - Fr�kke cam-piger [7] => Tusindvis af rigtige amat�rer live! [8] => Fra private hjem og sovev�relser [9] => dk.imlive.com [10] => ImLive - Fr�kke cam-piger [11] => dk.imlive.com [12] => Tusindvis af rigtige amat�rer live! Fra private hjem og sovev�relser [13] => ImLive - Fr�kke cam-piger - Tusindvis af rigtige amat�rer live! [14] => dk.imlive.com [15] => Fra private hjem og sovev�relser [16] => ImLive - Fr�kke cam-piger [17] => Tusindvis af rigtige amat�rer live! Fra private hjem og sovev�relser [18] => dk.imlive.com )

ここに私の実装があります:

array_map('self::process_elements', $data);

関数はクラス内にあります...

後でそのようなクエリを設定しました。例えば:

        mysql_query("SET NAMES 'utf8'");
         $query="INSERT INTO advert
                 SET device='$device',
                 keyword='$keyword',
                 google_domain='$google_domain',
                 language='$language',
                 country='$country',
                 check_url='$check_url',
                 task_id=$this->task_id";

       mysql_query($query) or die(myql_error());

しかし、文字が間違っているという例外がスローされます..入力する前に、それらはutfではないため..配列マップ関数が機能しないのはなぜですか?!

4

3 に答える 3

2

このスレッドを見てください:オブジェクトメソッドを array_map() に渡す

試す:

array_map(array($this, $this->process_elements), $data);
于 2012-06-11T11:44:46.060 に答える
1

php.net より引用

array_map から静的メソッドを呼び出す必要がある場合、これは機能しません。

<?PHP array_map('myclass::myMethod' , $value); ?>

代わりに、これを行う必要があります。

<?PHP array_map( array('myclass','myMethod') , $value); ?>

これは、コールバック引数を必要とするすべての PHP 関数で機能することを覚えておくと役に立ちます。

http://php.net/manual/de/function.array-map.php

于 2012-06-11T11:43:29.487 に答える
1

array_map() は値が変更された新しい配列を返すため、その配列の初期値を変更することはできません。これは参照によって渡されません。

$newArray = array_map('self::process_elements', $data);
于 2012-06-11T11:47:02.703 に答える