【问题标题】:What characters are allowed as a shortcode tag and what sanitizing filter should I used for them?哪些字符可以作为简码标签,我应该为它们使用什么过滤器?
【发布时间】:2014-04-07 21:31:30
【问题描述】:

我正在开发一个插件,用户可以在其中定义短代码标签。您建议允许什么,我的想法是只允许 ascii 字符。

另外,你如何清理输入?我在想也许stip_tags 然后正则表达式只允许a-z, 0-9 或者有更好的解决方案吗?也许wordpress过滤器会起作用?或者我可以使用过滤器 wordpress 用于蛞蝓?

【问题讨论】:

  • 从来没有听说过,所以我才问。

标签: php wordpress filter sanitization shortcode


【解决方案1】:

这是一个很好的蛞蝓 这意味着您还必须允许使用连字符 (-)

在此之后,您需要调用以下命令:

$string = preg_replace("/[^a-z0-9_\s-]/","",$string);    // strip away everything except a-z,0-9 and hyphen
$string = preg_replace("/[\s-]+/"," ",$string);     // clean multiple dashes or whitespaces
$string = preg_replace("/[\s_]/","-",$string);           // convert whitespaces and underscore to dash

小心;您还需要将 UTF8 字符更改为 ascii/latin,这意味着您需要在包含此类字符的其他语言中使用 transliterate

【讨论】:

  • 不把 utf-8 改成 ascii 会发生什么?
  • 实际上 wordpress 存在连字符问题! [wordpress.stackexchange.com/a/53120/15642]
  • 关于utf8;捷径必须(在我看来)是拉丁语,以便任何人都可以使用它们。关于连字符:只需将最后一个 preg_replace 更改为 "/[\s-]/" 即可摆脱连字符但保留下划线。关于音译:查看here
  • 好吧,我知道一点正则表达式以及如何让它们离开,谢谢,因为我只是使用一个非常简单的解决方案来接受 3 个字母数字字符,一次最多一个下划线现在我想我不不必处理音译。谢谢
猜你喜欢
  • 2016-04-11
  • 2011-01-16
  • 2010-12-19
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多