PHP:获取编码的html实体


PHP: Get encoded html entities

我正在尝试获取UTF-8字符串的html实体,
示例:example.com/search?q=مرحبا

<?php
    echo htmlentities($_GET['q']);
?>

我得到了:

مرحبا0مرحبا

它是UTF-8文本而不是html实体,我需要的是:

&#1605;&#1585;&#1581;&#1576;&#1575;

我试过urldecodehtmlentities函数!

将此代码添加到文件的开头:

header('Content-Type: text/html; charset=utf-8');

浏览器需要知道它是UTF-8。这个标签也可以放在头部分以表示形式。

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

我认为可以通过获取字符串中的每个字符并获取其值来解决它
根据Mark Baker的答案和vartec的答案,您可以得到:

<?php
    $chrArray = preg_split('//u',$_GET['q'], -1, PREG_SPLIT_NO_EMPTY);
    $htmlEntities = "";
    foreach ($chrArray as $chr) {
        $htmlEntities .= '&#'._uniord($chr).';';
    }
    echo $htmlEntities;
?>

我还没有测试它。