【问题标题】:Custom tag-value format自定义标签值格式
【发布时间】:2011-07-28 07:44:19
【问题描述】:

我想做这样的事情:

<my_tag_name>
text..
any_text
</my_tag_name>

但是如果用户这样放置内容会出现问题:

<my_tag_name>
text..
any_text
</my_tag_name>
</my_tag_name>

所以我把

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 中,但你不能在那里说

我的内容

我也想要这样的:

tag: reserved_64_characters
tag2: reserved_64_characters

这些东西是如何在 XML 中实现的?是否还有一些转义/替换。 我想这样做可以插入任何内容我的意思是任何字符(也是 ..)。

开启http://www.w3schools.com/xml/xml_cdata.asp

关于 CDATA 部分的注释:

CDATA 部分不能包含字符串“]]>”

【问题讨论】:

标签: php regex tags format


【解决方案1】:

您应该使用htmlentities 转义您的用户输入。就是这样。

【讨论】:

    【解决方案2】:

    看看CDATA,如果我正确理解您的问题,这正是您所需要的(不幸的是,我对此表示怀疑)。

    <my_tag_name>
    <![CDATA[text..
    any_text
    </my_tag_name>]]>
    </my_tag_name>
    

    所以

    text..
    any_text
    </my_tag_name>
    

    现在是my_tag_name 的值

    【讨论】:

    • 如果用户插入文本..]]> 作为内容。仍然需要以某种方式替换。
    【解决方案3】:

    您可以使用 php 的 htmlentities() 或 strip_tags() 来解析/清理用户输入...

    【讨论】:

    • 我只适用于 html 标签,但这里我有我自己的标签,可能有 ... 或者你的意思只是 og htmlentities() 的概念
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多