我是新来的,并且有一个整天欺骗我的问题。
我制作了一个PHP脚本,通过cURL读取网站源代码,然后使用DOMDocument类生成站点地图文件。
它几乎在每个方面都像魅力一样。问题在于特殊字符。
出于兼容性原因,站点地图文件需要将所有特殊字符编码为编号实体。我没有实现这一目标。
例如,我的一个条目 - 自动从网站URL读取,并写入站点地图文件 - 是:
http://www.somesite.com/serviços/redesign/
在源代码上它应该是:
* http://www.somesite.com/servi ** C ** OS /重新设计/ *
就是这样。但不幸的是,我真的不知道该怎么做。
源代码文件,服务器标头等......所有内容都编码为UTF-8。
我正在使用DOMDocument和相关扩展来构建XML。 (基本上,DOMDocument,$ obj-> createElement,$ obj-> appendChild)。
htmlentities提供ç而不是ç str_replace不起作用。它使得角色在输出中消失。
我使用的是$ obj-> createElement(“loc”,$ url);在我的代码上,刚才我在PHP手册中读到了我应该使用$ document-> createTextNode($ page),以便让实体编码支持。
嗯,它也没有用。
关于如何解开这个问题的任何想法?
感谢。
答案 0 :(得分:1)
htmlentities有第3个参数=使用的字符集即
htmlentities($string,ENT_COMPAT,"UTF-8");
答案 1 :(得分:1)
我使用过滤器扩展名:
$ url = filter_var($ url,FILTER_SANITIZE_STRING,FILTER_FLAG_ENCODE_HIGH)
使用前。这比我尝试过的任何其他解决方案都更好(bcoz它符合RFC)。