2015-06-08 3 views
0

Как я понимаю, версия сущности html апострофа (одинарная кавычка) равна '.Странное поведение Из htmlentities

Вот как он кодируется, когда я добавляю данные в свою базу данных. Однако, когда я пытаюсь выполнить поиск в базе данных, у меня возникает проблема, потому что код, который я использую, дает апостроф как ', т. К. Нуль отсутствует.

Я раздел страницу вниз до самого основного бита тестового кода:

$hotelname = filter_input(INPUT_GET, 'hotelname', FILTER_SANITIZE_STRING); 
//$hotelname = "Auberge de l'Etang Bleu"; 
$hotelname = htmlentities($hotelname,ENT_QUOTES,"UTF-8"); 
echo $hotelname; 
exit(); 

Почему бы это сделать? Есть ли что-то в разных версиях PHP или что-то в этом роде?

Чтобы еще больше мутить воды, если я прокомментирую первую строку и выслать комментарии во второй строке, htmlentities, похоже, ничего не делает, и это эхо версии с апострофом.

Пунктуация и акценты всегда приводят меня в бешенство, но это даже хуже, чем обычно. Это я? (Без сомнения, это так.)

EDIT
См. Мое решение ниже.

+0

Вы должны, вероятно, показать свой вклад. – Anonymous

ответ

0

Как я понимаю, версия сущности html апострофа (одиночная кавычка) равна '.

Вы понимаете неправильно. ' верен (быстрый тест показывает, что браузер понимает оба варианта, но ваша БД будет рассматривать их как разные строки).

Вы должны также рассмотреть кодировку на дисплее, а не при сохранении в базе данных, которая препятствовала бы разницу от mattering вообще. Документы PHP показывают, что некоторые версии выводят ' и другие вывод '.

+0

* «Вы понимаете неправильно. ' верен.» * Не совсем. Либо должно работать нормально. – Anonymous

+0

@Anonymous Не когда OP ищет базу данных для строки, она не будет. – ceejayoz

+0

Да, но в этом случае ''' будет правильной строкой для поиска: http://3v4l.org/U3aHK – Anonymous

0

В конце концов, кажется, что это был FILTER_SANITIZE_STRING, который был виновником. Он удалял 0 из '.

Я думаю, что я сейчас решил ее изменения в использовании

$hotelname = $_GET['hotelname']; 
$hotelname = htmlentities($hotelname, ENT_QUOTES); 
$hotelname = mysqli_real_escape_string($db,$hotelname); 
Смежные вопросы