在php中格式化xml属性的字符串

hpi*_*que 1 php xml string encoding utf-8

我有一些在我的数据库中有效的字符串但是当我将它们包含在UTF-8 XML输出的属性中时,它们会给我以下错误:

XML解析错误:格式不正确

我目前的代码(简化):

header('Content-Type: text/xml'); 
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<root attribute="' . htmlentities($string_from_hell) . '">'; 
Run Code Online (Sandbox Code Playgroud)

在将这些字符串包含在XML属性中之前,我应如何设置它们?

可能的值$string_from_hell:( 不知道它是否会正确显示)

Art*_*cto 6

尝试

htmlspecialchars($string_from_hell, ENT_QUOTES, "UTF-8")
Run Code Online (Sandbox Code Playgroud)

htmlentities不会这样做,因为它会创建HTML中无法识别的HTML实体,只能创建HTML.您还应该指定charset,因为默认值不是UTF-8,而是ISO-8859-1.

您还缺少"属性值周围的引号().

还有更好的方法来创建处理转义的XML文件.参见例如XMLWriter.