我想通过php
将一些印地文字符串转换为html实体喜欢
$message = "आए थे पर्यटक, खुद ही बह गए";
$message_convert = SomeKindOfunctionOrProcess($message);
echo $message_convert;
// output : आए थे पर्यटक, खुद ही बह गए
我希望你明白我想要的。我可以在我的项目中进一步处理输出字符串。但我不知道如何将这个从给定的hindi字符串直接转换为变量$message
修改:
<?php
$message = file_get_contents("hindi.txt");
echo $message;
$message_convert = SomeKindOfunctionOrProcess($message);
file_put_contents("ot1.txt", $message_convert);
?>
文件आए थे पर्यटक, खुद ही बह गए
hindi.txt
我希望文件आए थे पर्यटक, खुद ही बह गए
中的输出字符串ot1.txt
是给定字符串的html实体
答案 0 :(得分:3)
尝试使用htmlentities功能。使用此功能,您可以将字符转换为html实体。它支持获取字符集。因此,您可以使用htmlentities将UTF-8字符转换为实体。 ENT_QUOTES
表示此函数必须编码引号。您可以查看文档以获取更多信息。
您的代码可以像这样更改:
<?php
$message = "आए थे पर्यटक, खुद ही बह गए";
$message_convert = htmlentities($message,ENT_QUOTES,"UTF-8");
echo $message_convert;
?>
P.S。如果要将所有字符转换为html实体,可以尝试this answer。所以你的代码可能是这样的:
function encode2($str) {
$str = mb_convert_encoding($str , 'UTF-32', 'UTF-8');
$t = unpack("N*", $str);
$t = array_map(function($n) { return "&#$n;"; }, $t);
return implode("", $t);
}
$message = "आए थे पर्यटक, खुद ही बह गए";
$message_convert = encode2($message);
echo $message_convert;
答案 1 :(得分:1)
如果你想回复
$message = "आए थे पर्यटक, खुद ही बह गए";
您可以设置$ message变量
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
头部的这个元值。
或者您可以在php脚本中设置内容类型
header( 'Content-Type: text/html; charset=utf-8' );
答案 2 :(得分:0)
@Amir
的答案
function encode ($data)
{
$html = preg_replace("/([\\xC0-\\xF7]{1,1}[\\x80-\\xBF]+)/e", 'b_utf8_to_html("\\1")', $data);
$html_convert = "";
$code = false;
for($i=0; $i<strlen($html); $i++)
{
if($html[$i]=='&' && $html[$i+1]=='#')
$code = true;
if($code)
$html_convert .= $html[$i];
else
$html_convert .= b_utf8_to_html($html[$i]);
if($code===true && $html[$i]==';')
$code = false;
}
return $html_convert;
}
function b_utf8_to_html ($data)
{
$ret = 0;
foreach((str_split(strrev(chr((ord($data{0}) % 252 % 248 % 240 % 224 % 192) + 128) . substr($data, 1)))) as $k => $v)
$ret += (ord($v) % 128) * pow(64, $k);
return "&#$ret;";
}