Селектиз вставляет? символ в атрибуте значения данных - PullRequest
1 голос
/ 14 февраля 2020

Я использую selectize. js, чтобы создать выпадающий список всех городов Бельгии.

var cityselect = $('.city-select');
    if (cityselect.length) {
        $('.city-select').selectize({
            create: false,
            sortField: {
                field: 'text',
                direction: 'asc'
            },
            dropdownParent: 'body',
            plugins: ['remove_button']
        });
    }

Я создаю поле выбора следующим образом:

<div class="form-group">
    <label for="city"><?=lang("register_volunteer_select_city_or_commune")?></label>
    <select id="city" class="city-select" name="city" autocomplete="new-password" required data-validation-required-message="<?=lang("register_volunteer_select_city_or_commune_validation")?>">
        <option value="" selected><?=lang("register_volunteer_select_city_or_commune")?></option>
        <?php
        foreach ($citiesbe as $city) {
            if ($this->currentLanguage == 'fr') {
                $cityName = $city->name_fr;
            } else {
                $cityName = $city->name_nl;
            }
            $key = strtolower($cityName) . "," . $city->zip_code;
            echo "<option value=\"$key\"> $cityName ($city->zip_code)</option>";
        }
        ?>
    </select>
    <div class="help-block font-small-3"></div>
</div>

В Бельгии есть много городов с французскими именами (например, Léglise), которые содержат специальный символ (é , è, ç, ...) et c. Переменная $ townsbe, взята из моей таблицы "towns_be", и запись для Léglise выглядит следующим образом:

+--------------+----------+---------+---------+--------+-------+
| cities_be_id | zip_code | name_nl | name_fr |  lat   |  lng  |
+--------------+----------+---------+---------+--------+-------+
|         1786 |     6860 | Léglise | Léglise | 49,784 | 5,538 |
+--------------+----------+---------+---------+--------+-------+

Затем в моем выборе я могу выбрать Léglise, и он выглядит великолепно, но когда я проверяю Элемент, я замечу, что data-value установлено следующее значение:

<div data-value="l�glise,6860" class="item"> Léglise (6860)</div>

Поскольку он вставляет специальные символы (в этом примере - é) как? это передает это через переменные POST как? и таким образом он генерирует много ошибок.

Как мне go об этой проблеме?

Я установил кодировку и сопоставление базы данных в utf8mb4, соединение с базой данных через PHP также установлено в utf8mb4, и мой документ содержит строку кодировки:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

I ' Я полностью исчерпал идею о том, как решить эту проблему.

1 Ответ

1 голос
/ 14 февраля 2020

Вы пытались использовать mb_strtolower ()?

https://www.php.net/manual/en/function.mb-strtolower.php

$b = mb_strtolower($a);
echo $b;

PHP5 не совместим с UTF-8, не работает на многобайтовые символы, поэтому вам все равно нужно прибегнуть к расширению mb.

...