0

テキストに「é」が含まれていると、PHPで文字列比較を機能させるのに問題があります。以下は、デバッグインラインコードの山で私が持っているコードです。問題は、ドロップダウンでモントリオールを選択した場合、ifテストが機能しないことです。

if ($metabox->get_the_value() == $key) echo $selected;
// original code pre debug

コード

a= Array(
    [INFORMATION] => INFORMATIONS
    [LODGING] => HEBERGEMENT
    [LOOK OUT FOR] => À SURVEILLER
    [Montréal] => Montréal
    [PROMOTIONS] ==> PROMOTIONS
    [SECTION NAME] ==> NOM DE SECTION
    [SPOTLIGHT] ==> EN VEDETTE
)

foreach (a as $key => $val){
    echo '<option value="'.$key.'"';
    if (strcasecmp ( trim($metabox->get_the_value())), trim($key))== 0) echo $selected ;
    echo '>'.$key.' ('.$val.'):'. strcmp ( $metabox->get_the_value(),  $key).  '</option>';
}

モントリオールを選択して保存すると、出力は次のようになります。DBに保存されます。

<select name="_content_language_meta[_content_cat_type]">
    <option value="-1">Select</option>
    <option value="INFORMATION">INFORMATION (INFORMATIONS):Montréal - 1</option>
    <option value="LODGING">LODGING (HEBERGEMENT):Montréal - 1</option>
    <option value="LOOK OUT FOR">LOOK OUT FOR (À SURVEILLER):Montréal - 1</option>
    <option value="Montréal">Montréal (Montréal):Montréal - -1</option>
    <option value="PROMOTIONS">PROMOTIONS (PROMOTIONS):Montréal - -1</option>
    <option value="SECTION NAME">SECTION NAME (NOM DE SECTION):Montréal - -1</option>
    <option value="SPOTLIGHT">SPOTLIGHT (EN VEDETTE):Montréal - -1</option>
</select>

情報を選択した場合に出力

<select name="_content_language_meta[_content_cat_type]">
    <option value="-1">Select</option>
    <option value="INFORMATION" selected="selected">INFORMATION (INFORMATIONS):INFORMATION - 0</option>
    <option value="LODGING">LODGING (HEBERGEMENT):INFORMATION - -1</option>
    <option value="LOOK OUT FOR">LOOK OUT FOR (À SURVEILLER):INFORMATION - -1</option>
    <option value="Montréal">Montréal (Montréal):INFORMATION - -1</option>
    <option value="PROMOTIONS">PROMOTIONS (PROMOTIONS):INFORMATION - -1</option>
    <option value="SECTION NAME">SECTION NAME (NOM DE SECTION):INFORMATION - -1</option>
    <option value="SPOTLIGHT">SPOTLIGHT (EN VEDETTE):INFORMATION - -1</option>
</select>

これはWordPress/MYSQLサイトです。アイデア?

4

1 に答える 1

0

私は utf8/char-encoding の専門家ではありませんが、かなりの数の問題がありました..

UTF-8 値の保存方法に関しては、データベースが UTF-8 値を受け入れるように適切に構成されていることを確認してください。utf8 文字が DB に正しく保存されていることを確認してください。

DB 文字セットが「utf8」に設定されていることと、照合順序も utf8 値に設定されていることを確認してください。しばらくの間、「utf8_unicode_ci」を使用していましたが、最近「utf8_bin」を使用するように変更しましたcase-insensitive (ci)" を使用すると、クエリが期待どおりに動作しなくなります (例: keY=keY vs key=KeY and key=keY or key=KEY)

于 2012-07-23T15:48:20.640 に答える