как вставить специальный символ в mysql через php и отобразить на html-странице

как вставить специальные символы в базу данных (MySQL), как

Registered symbol ( ® ) ИЛИ Copyright sign ( © ) ИЛИ Trade Mark sign ( ™ )

Также я хочу показать как оригинал на странице html.

Что я должен делать в обеих сторонах (передняя часть и задняя часть), пожалуйста, уточните

Какая функция более эффективна?

Способ 1:

 $_GET = array_map('trim', $_GET); $_POST = array_map('trim', $_POST); if(get_magic_quotes_gpc()){ $_GET = array_map('stripslashes', $_GET); $_POST = array_map('stripslashes', $_POST); $_GET = array_map('strip_tags', $_GET); $_POST = array_map('strip_tags', $_POST); } else{ $_GET = array_map('mysql_real_escape_string', $_GET); $_POST = array_map('mysql_real_escape_string', $_POST); } 

Способ 2:

  foreach ($_POST as $key=>$value){ if (!get_magic_quotes_gpc()) { return addslashes(htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8')); } else { return htmlentities(strip_tags($value),ENT_QUOTES,'UTF-8'); } } 

Я немного смущен, в чем разница между

htmlentities() и htlspecialchars() , и какой из них мне нужно использовать?

какую функцию следует использовать addslashes() или stripslashes() при вставке в базу данных?

Solutions Collecting From Web of "как вставить специальный символ в mysql через php и отобразить на html-странице"

Просто добавьте эти символы в свой текст и выполните его как SQL-запрос:

 INSERT INTO tbl_name VALUES ("Here's my text: ©®"); 

Когда вы хотите отобразить его, веб-сайт ничего не делает с этими символами (но помните, чтобы избежать по крайней мере < , > , & (используя htmlspecialchars () ), потому что они имеют особое значение в документах XML / SGML (HTML)),

PS. Также не забывайте избегать текста, переданного в SQL-запрос, используя mysql_real_escape_string (), чтобы избежать любых проблем с SQL-инъекциями. Если ваш сервер имеет magic_quotes_gpc отключите его или, по крайней мере, отфильтруйте данные GET / POST / COOKIE до его необработанного значения. Вы всегда должны сознательно избегать ценностей.

РЕДАКТИРОВАТЬ:

Согласно вашему комментарию … Я не помню, включены ли magic_quotes_gpc по умолчанию, но вы можете легко отменить эффект магических котировок. Только в самом начале вашего PHP-кода добавьте что-то вроде этого:

 if (get_magic_quotes_gpc()) { array_walk_recursive($_GET, 'stripslashes'); array_walk_recursive($_POST, 'stripslashes'); array_walk_recursive($_COOKIE, 'stripslashes'); } 

Теперь каждое значение GPC должно быть всегда сырым – без кавычек – поэтому вам нужно сбежать от него вручную, прежде чем передавать какую-либо переменную в запрос.

Из документов PHP для htmlentities() :

Эта функция идентична htmlspecialchars () всеми способами, за исключением htmlentities (), все символы, имеющие эквиваленты сущности HTML, переводятся в эти сущности.

Не беспокойтесь о кодировании вещей, когда вы их храните: храните данные raw и затем кодируйте их с помощью htmlentities() когда вы показываете его в своем HTML.

Изменить: Также прочтите это .

Во-первых, вы должны просто использовать mysql_real_escape_string при вставке в базу данных – это гарантирует, что все, что вы храните, безопасно закодировано, но сохраняет всю исходную информацию.

В терминах вывода ключевое различие между htmlentities и htmlspecialchars заключается в том, что htmlentities преобразуют все символы, у которых есть сущности, тогда как htmlspecialchars будут только конвертировать <,>, &, ", ',