当前位置: 首页 > 面试题库 >

如何使用PHP将所有字符转换为等效的html实体

司马昕
2023-03-14
问题内容

我想将其转换hello@domain.com

hello@domain.com

我努力了:

url_encode($string)

这提供了我输入的相同字符串,并以@符号转换为 %40

还尝试了:

htmlentities($string)

这样就提供了相同的字符串。

我正在使用UTF8字符集。不知道这是否有所不同…。


问题答案:

它就来了(假设使用UTF-8,但是更改起来很简单):

function encode($str) {
    $str = mb_convert_encoding($str , 'UTF-32', 'UTF-8'); //big endian
    $split = str_split($str, 4);

    $res = "";
    foreach ($split as $c) {
        $cur = 0;
        for ($i = 0; $i < 4; $i++) {
            $cur |= ord($c[$i]) << (8*(3 - $i));
        }
        $res .= "&#" . $cur . ";";
    }
    return $res;
}

编辑 推荐的替代使用unpack

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);
}


 类似资料:
  • 问题内容: 我有以下内容: 我正在寻找一个Javascript函数来转换文本,以便每个特殊字母都由其HTML实体序列表示,如下所示: 该函数不仅应转义该示例的字母,而且还应转义所有这些字母。 您将如何实现?是否有任何现有功能?(很简单,因为首选没有框架的解决方案)顺便说一句:是的,我已经看到了这个问题,但是并不能满足我的需求。 问题答案: 借助bucabay的帮助和创建我自己的功能的建议,我创建了

  • 问题内容: 可以使用PHP将HTML页面转换为PDF吗?如果可以,该如何做? 具体而言,页面是动态生成的发票。所以我想使用以下命令加载它: 而且HTML输出必须转换为PDF。 任何好的库都可以。 问题答案: 如果您希望从php 创建 pdf,则pdflib将为您提供帮助(就像其他人建议的那样)。 否则,如果您想通过PHP 将 HTML页面 转换 为PDF,您将在这里发现一些麻烦。.3年以来,我一直

  • 问题内容: 我是一名PHP开发人员,在我的一个项目中,我需要将一些HTML文档(大约30至50页)转换为PDF文档。 我的搜索找到了以下可能的解决方案。其中包括一些PHP库和一些命令行应用程序。每种都有自己的优点和缺点。 PHP库: fpdf(需要更多的转换努力) tcpdf(需要更多的转换努力) html2fpdf http://html2fpdf.sourceforge.net html2pd

  • 我有一个这样的Html字符串: 我需要将此 html 字符串转换为脚本中的对象。也就是说,当在jquery中使用方法时,我应该得到相同的对象结果。我尝试了这样的事情: 但是没有用。我应该在javascript中使用什么方法将HTML字符串转换为对象符号?我应该得到对象形式的每个子节点。我不想在这个解决方案中使用Jquery。我期待控制台中显示的确切输出

  • 问题内容: 我正在制作一个javascript应用程序,该应用程序使用jquery 检索文件并将数据注入到其所嵌入的网页中。 这些文件使用UTF-8编码,并包含重音字符,例如é,ö和å。 问题是我无法控制将要使用该应用程序的页面上的字符集。 有些将使用UTF-8,但其他一些将使用iso-8859-1字符集。这当然会使文件中的特殊字符乱码。 如何使用JavaScript将特殊的UTF-8字符转换为等

  • 我使用iText 2.1.7的飞碟将。它工作正常,但当html中有一些中文、韩文等字符时,就会出现问题。 我的PDF中出现意外字符,而不是正常的中文字符 我发现这个问题是公开的,所以我认为目前没有办法让飞碟正确地渲染PDF? PS:我也发现了这个问题,但我无法理解他们提供的解决方案。 这是我正在使用的代码 其中file是我试图转换的html。 有没有其他方法或库可以做同样的事情? 这是我正在使用的