0

我正在使用 php v5.3。我想将字符串转换为有效的 xml。Xml 显然需要将 '&' 字符编码为,&但我能找到的所有函数也会将 'ë' 之类的字符转换为 xml 不接受的 html 实体(ë在这种情况下)。我应该使用什么功能?

4

4 回答 4

4

htmlspecialchars是你需要的。htmlentities与 不同,它对转换的内容更具选择性。

htmlentities 文档

此函数在所有方面都与 htmlspecialchars() 相同,除了 htmlentities() 之外,所有具有 HTML 字符实体等效项的字符都将转换为这些实体。

<?php
$a = "I love things & stuffë";
$b = htmlspecialchars($a);
$c = htmlentities($a);
echo "$b\n$c\n";

输出:

I love things &amp; stuffë
I love things &amp; stuff&Atilde;&laquo;

http://www.php.net/manual/en/function.htmlspecialchars.php

于 2013-03-15T16:17:03.240 回答
2

如果您创建 XML,那么您可能已经准备好DOMDocument了。即使没有,您也可以轻松创建一个。使用 aDOMDocument您可以为 XML 创建 100% 格式正确的文本:

$text = "I'm using php v5.3. I would like to convert a string to valid xml. Xml apparently requires '&' characters to be encoded to &amp; but all functions I can find which do this also convert characters like 'ë' to html entities xml doesn't accept (&euml; in this case). What function should I use?";

$doc = new DOMDocument();
echo $doc->saveXML($doc->createTextNode($text));

这将为您提供以下输出(逐字):

I'm using php v5.3. I would like to convert a string to valid xml. Xml apparently requires '&amp;' characters to be encoded to &amp;amp; but all functions I can find which do this also convert characters like 'ë' to html entities xml doesn't accept (&amp;euml; in this case). What function should I use?

于 2013-03-15T16:59:06.123 回答
0
$str = preg_replace('/\s&\s/', '&amp', $str);

这将替换用尾随和结束空格包围的所有“&”。只需根据需要稍微制定模式

于 2013-03-15T16:11:41.703 回答
0

如果你只想转换 & 为&amp;你可以试试这个:

$encoded_str = str_replace('&','&amp;',$original_str);

为了避免得到类似&amp;amp;如果你最初有一个&amp;,防止它的一种方法是&amp;先将所有转换为 &

$encoded_str = str_replace('&','&amp;',str_replace('&amp;','&',$original_str));
于 2013-03-15T16:15:41.857 回答