1

我是新来的,有一个问题整天都在欺骗我。

我制作了一个 PHP 脚本,它通过 cURL 读取网站源代码,然后使用 DOMDocument 类生成站点地图文件。

它几乎在各个方面都像魅力一样发挥作用。问题在于特殊字符。

出于兼容性原因,站点地图文件需要将所有特殊字符编码为编号实体。而我没有做到这一点。

例如,我的一个条目 - 自动从站点 URL 读取,并写入站点地图文件 - 是:

http://www.somesite.com/serviços/redesign/

在源代码上,它应该如下所示:

* http://www.somesite.com/servi **ç**os/redesign/*

只是这个。但不幸的是,我真的不知道该怎么做。

源代码文件、服务器头文件等……一切都被编码为 UTF-8。

我正在使用 DOMDocument 和相关扩展来构建 XML。(基本上,DOMDocument、$obj->createElement、$obj->appendChild)。

htmlentities 给出ç而不是ç str_replace 不起作用。它使角色在输出中消失。

我正在使用 $obj->createElement("loc", $url); 在我的代码上,刚才我在 PHP 手册中读到我应该使用 $document->createTextNode($page),以便获得实体编码支持。

好吧,它也不起作用。

关于如何摆脱这个问题的任何想法?

谢谢。

4

2 回答 2

1

我使用了过滤器扩展:

$url = filter_var($url, FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH)

在使用它之前。这比我尝试过的任何其他解决方案都有更好的结果(因为它符合 RFC)。

于 2010-10-04T23:25:13.357 回答
1

htmlentities 有第三个参数 = 要使用的字符集,即

htmlentities($string,ENT_COMPAT,"UTF-8");
于 2010-05-18T02:38:10.910 回答