【问题标题】:how to replace all special characters except underscore and period in php?如何替换php中除下划线和句点之外的所有特殊字符?
【发布时间】:2014-02-12 03:02:45
【问题描述】:

谁能告诉我如何替换字符串中除下划线和句点符号之外的所有特殊字符。而且我一直在尝试了解如何通过阅读PHP 手册及其对于像我这样的初学者来说太困惑了,所以有没有其他文档或教程对初学者来说很容易,这样我就不必在每次我想使用这个功能时发布另一个这样的问题并给大家带来麻烦?

preg_replace('/[^a-zA-Z0-9]/', '', $string);

这就是我拥有的它替换所有特殊字符,但我想除了 _.

【问题讨论】:

标签: php regex


【解决方案1】:

_. 放入否定的字符集([^...]):

$string = preg_replace('/[^a-zA-Z0-9_.]/', '', $string);

您不应省略 $string = ..,因为 preg_replace 返回替换字符串。它不会更改字符串。

【讨论】:

  • @maniteja,仅供参考,上面的模式可以替换为/[^\w.]/,因为\w 匹配任何单词字符(包括字母、数字、_)。
  • 这里如何允许使用“/”字符?
  • @ChrisSchlitt,添加/,适当转义:'/[^a-zA-Z0-9_.\/]/'。或者使用另一个正则表达式分隔符(没有转义):'|[^a-zA-Z0-9_./]|'
【解决方案2】:

您可以使用一些 php 过滤器小部件,例如 Purifier(为输入设置白名单)...

不过,我们还是建议您学习正则表达式!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多