保存重音字母或特殊字符并清理它们的正确方法

时间:2014-08-24 06:17:39

标签: php sanitization

所以我想在DB中保存一些特殊字符,例如:á,é,í,ó,ú,ñ,Ñ......所以,如果我使用:

$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);

据我所知,它会绊倒所有标签,只留下字符串字母和数字也是特殊字符...所以如果我的标题是“Algúnosárboles”(少数树),它将按原样存储,如果我使用:

$title = filter_input(INPUT_POST, '$title', FILTER_SANITIZE_STRING);
$title = $con->real_escape_string($title);

它仍然保存数据,如ú和á一样á,我没有问题,我的表格排序是utf8_general_ci,无论如何,这里的问题是当我显示信息时:

<?php
 // query to get the informacion
 echo $t['title'];
?>

它将显示 &lt; ? &GT;而不是实际的字符,即使html被设置为

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

所以这是一个问题......现在如果我不使用:

$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_STRING);
// instead I use
$title = htmlentities($_POST['title'], ENT_QUOTES, 'utf-8');
$title = $con->real_escape_string($title);

“重音”字母保存为&aacute;表示á...如果我回复它会显示实际字符。

我已经看到了一些DB存储字符的位置(á,é,í...),这是显示它的问题......所以。

什么是清理字符串然后escape_string然后保存它的最佳方法?然后你可以在不认为你可能得到一些异化符号的情况下检索它......

我正在尝试使用尽可能少的代码

0 个答案:

没有答案