【发布时间】:2016-01-06 01:57:42
【问题描述】:
我想将一个字符串写入一个 XML 节点,但在这样做之前我必须删除所有禁止的字符。我发现以下工作:
preg_replace("/[^\\x0009\\x000A\\x000D\\x0020-\\xD7FF\\xE000-\\xFFFD]/", "", $var)
但是,它删除了很多我想保留的字符。如space、;、&、<、>\、/。
我做了一些搜索,发现空格是x0020,所以我首先尝试通过将上面的代码更改为允许空格:
preg_replace("/[^\\x0009\\x000A\\x000D\\x0021-\\xD7FF\\xE000-\\xFFFD]/", "", $var)
但它仍然会删除空格。我只想删除那些奇怪的隐藏“命令”字符。我该怎么做?
编辑:我之前用htmlspecialchars() 制作了$var,因此我想保留& 和;
【问题讨论】:
-
使用 CDATA 怎么样? en.wikipedia.org/wiki/CDATA
-
查看stackoverflow.com/questions/4005282/… 是否与您相关。我认为答案之一是。
-
@SteveClanton 该问题的 OP 希望删除所有特殊字符。我没有。
-
“我必须去掉所有禁止的字符” – 定义“禁止” – 由什么/谁来定义?