0

だからここに私のコードがあります:

function csq($string) 
{ 
    $search = array(chr(145), 
                    chr(146), 
                    chr(147), 
                    chr(148), 
                    chr(151),
                    chr(149),
                    "•"); 

    $replace = array("'", 
                     "'", 
                     '"', 
                     '"', 
                     '-',
                     '•',
                     '•'); 

    return str_replace($search, $replace, $string); 
}
$username = csq($_POST["username"]);
$titletag = csq($_POST["titletag"]);
$keywordtag = csq($_POST["keywordtag"]);
$desctag = csq($_POST["desctag"]);
$content = csq($_POST["content"]);

私が知る限り、各変数は指定された名前のポスト変数を受け取り、それを csq() 関数に渡す必要があります。これにより、特殊文字が置き換えられます。

これは起こっていません。私は何か間違ったことを書いていますか?

ここに文字列があります:

•   Went over key word list that was generated
o   Ant1 highlighted approved words
o   We should add a column to calculate the ratio between the number of queries vs. the number of results “in parenthesis”
4

1 に答える 1

0
  1. 関数を実行するたびにリストを再定義します。これにより、静的な使用を回避できます。
  2. 1つの配列のみを使用して、array_keysを使用して$ searchを取得することで、何が私が好むものに変換されるかについて、より良い概要を取得します。
  3. それぞれを個別にではなく、完全な文字列「•」を置き換えてもよろしいですか?

私は自分の関数を次のように書くべきでした:

function csq($string)
{
    static $translation_table;

    if(!$translation_table)
    {
        $translation_table = array();
        $translation_table[chr(145)] = "'";
        $translation_table[chr(146)] = "'";
        $translation_table[chr(147)] = '"';
        $translation_table[chr(148)] = '"';
        $translation_table[chr(151)] = "_";
        $translation_table[chr(149)] = "•";
        $translation_table["â"] = "•";
        $translation_table["€"] = "•";
        $translation_table["¢"] = "•";
    }

    return str_replace(array_keys($translation_table), $translation_table, $string);
}
于 2012-06-28T17:59:32.077 に答える