我想做这样的事情:
<my_tag_name>
text..
any_text
</my_tag_name>
但如果用户放置如下内容,问题就出现了:
<my_tag_name>
text..
any_text
</my_tag_name>
</my_tag_name>
所以我更换了&lt;与&lt;'
function content($string, $tagname)
{
$pattern = "/<$tagname>([\w\W]*?)<\/$tagname>/";
$preg_match($pattern, $string, $matches);
return str_replace("<'", "<", $matches[1]);
}
function replace($string)
{
return str_replace("<", "<'", $string);
}
目标是将自定义标记和任何类型的文本作为内容。这是正确的方法吗?我尝试了它,它的工作原理。但后来我再次记得同样的原则是在html但你不能放开让我们说&lt; DIV&GT;我的内容&lt; DIV&GT; &LT; /格取代。
我也想这样:
tag: reserved_64_characters
tag2: reserved_64_characters
如何在XML中实现这些功能?还有一些逃脱/替换。 我想这样做可以插入任何内容我的意思是任何字符(也是&lt; tag_name&gt; ..)。
在http://www.w3schools.com/xml/xml_cdata.asp
上关于CDATA部分的说明:
CDATA部分不能包含字符串“]]&gt;”
答案 0 :(得分:2)
您应该使用htmlentities转义用户输入。就是这样。
答案 1 :(得分:1)
如果我理解你的问题(不幸的是,我怀疑),请查看CDATA
这正是你所需要的。
<my_tag_name>
<![CDATA[text..
any_text
</my_tag_name>]]>
</my_tag_name>
所以
text..
any_text
</my_tag_name>
现在是my_tag_name
答案 2 :(得分:0)
你可以使用php的htmlentities()或strip_tags()来解析/擦除用户输入......