#php #string #select #foreach
#php #строка #выберите #foreach
Вопрос:
В поле ввода выбора я выбираю значение со сравнением строк. Но это не работает со строкой, в которой есть amp;
символ. Это строка Batemans Bay amp; Eurobodalla
, для которой ==
не работает. Я также попробовал strcmp
функцию, но это также не возвращает правильное значение. Вот как выглядит мое поле выбора.
<select name="atlas_area_filter" style="width:90%;">
<option value="all">All</option>
<?php
$atlas_area_filter = get_option('atlas_area_filter');
foreach($terms_area as $term_area){
$term_area_name = $term_area->name;
?>
<option value="<?php echo $term_area_name; ?>" <?php echo ($term_area_name == $atlas_area_filter) ? ' selected="selected"' : '';?>><?php echo $term_area_name; ?></option>
<?php
}
?>
</select>
Комментарии:
1. Можете ли вы
echo $atlas_area_filter;
? Я подозреваю, что у вас есть amp;amp; вместо amp; в вашей строке.2. Вы сбросили оба значения, чтобы посмотреть, что они на самом деле содержат?
3. Да, я повторяю это, и у него есть amp;. Обе строки кажутся похожими, но оператор сравнения не работает для этой строки.
4. Совпадает ли первая половина строк? Совпадает ли вторая половина строк?
Ответ №1:
Я имею в виду, что проблема заключается в кодировании параметров. Когда параметр содержит специальные символы по URL, он автоматически кодируется. Поэтому попробуйте добавить urldecode ( string $str )
функцию, например:
$atlas_area_filter = urldecode(get_option('atlas_area_filter'));
Вы можете протестировать здесь
Комментарии:
1. Я пытался использовать urldecode, но у меня это не сработало.
2. Попробуйте добавить в свой скрипт
var_dump($atlas_area_filter)
, возможно, у него есть конечные пробелы или любые другие странные символы