通过php将印地语文本转换为html实体代码

时间:2015-12-02 09:52:15

标签: php

我想通过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

我希望文件&#2310;&#2319;&#32;&#2341;&#2375;&#32;&#2346;&#2352;&#2381;&#2351;&#2335;&#2325;&#44;&#32;&#2326;&#2369;&#2342;&#32;&#2361;&#2368;&#32;&#2348;&#2361;&#32;&#2327;&#2319;中的输出字符串ot1.txt是给定字符串的html实体

3 个答案:

答案 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;";
}