PHP字符串比较不适用于法语é

时间:2012-07-22 18:27:08

标签: php wordpress unicode

如果我在文本中有“é”,我在使用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>';
}

如果我选择并保存蒙特利尔,则输出如下所示,它已保存在数据库中。

<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网站。想法?

1 个答案:

答案 0 :(得分: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和key = keY或key = KEY)