将 HTML 字符引用转换为 UTF-8


Convert HTML character reference to UTF-8

我是PHP和字符转换的新手,所以我的问题标题可能会误导。

我正在解析一个网站,在一个字符串中,我想解析,是一个特殊的字符,如下所示:

<tag>Hello! My name is &#382;enk!</tag>

现在这是我将插入到数据库中的文本,因此我需要&#382;转换为字符' ž'(其 ASCII 代码)。

使用html_entity_decode()并显式指定字符集:

$string = html_entity_decode($string, ENT_QUOTES, "utf-8");

供将来参考:PHP 字符串函数

尝试下面的代码。

$input = "Hello! My name is &#382";
$output = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $input);
echo $output;

希望这有帮助。

使用以下代码解决此问题

$string_to_convert="your string";

$utf 8_converted_string=utf8_encode($string_to_convert);

echo $utf 8_converted_string//输出 utf8 字符

问题不在于在浏览器中显示数据,因为我尝试了以下内容并且效果很好:

<?php echo '<tag>Hello! My name is &#382;enk!</tag>'; ?>

问题不在于将数据保存在数据库中。

问题在于从数据库中检索此字符。

因此,您需要在查询数据库之前将格式设置为 UTF-8:

$mysqli->query("SET NAMES 'utf8'");
$mysqli->query("SET CHARACTER SET utf8");

如果您使用的是 mysqli:

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
if(mysqli_connect_errno()){
    printf("DB Connect failed: %s'n", mysqli_connect_error());
    exit();
}
// Add the UTF-8 Support
$mysqli->query("SET NAMES 'utf8'");
$mysqli->query("SET CHARACTER SET utf8");
// Query the database
$mysqli->query("SELECT column FROM `table` ...");