【问题标题】:Using preg_replace pattern to clean a string使用 preg_replace 模式清理字符串
【发布时间】:2014-03-14 10:29:44
【问题描述】:

我想使用 php preg_replace 来 remove(注意我希望它们被删除,所以我不想使用 htmlentities)

我想允许字符 a-z、A-Z、0-9 和特殊字符“@_”。只有

【问题讨论】:

  • 好吧,是什么阻止了你?
  • 好问题@NiettheDarkAbsol,除了原来的“问题”。
  • 我认为@Niet 是在说你到目前为止尝试过什么?你不能不先尝试就来这里寻求家庭作业解决方案或与工作相关的解决方案

标签: php regex preg-replace


【解决方案1】:

非常直接:

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

用简单的英语:用任何内容替换出现的任何不是字母、数字或符号@. 的内容。

尸检:

  • / - 起始分隔符
  • [^a-zA-Z0-9@.] - 一个字符类
    • ^ - 用于否定字符类
    • a-zA-Z0-9 - 字母或数字
    • @ - 文字字符 @
    • . - 文字字符 .
  • + - 匹配上一个数量一次或多次
  • / 结束分隔符

【讨论】:

  • 使用\w 不是一个好主意。 ““单词”字符是任何字母或数字或下划线字符,即任何可以成为 Perl“单词”一部分的字符。字母和数字的定义由 PCRE 的字符表控制,并且可能因语言环境而异- 正在发生特定匹配。例如,在“fr”(法语)语言环境中,一些大于 128 的字符代码用于重音字母,这些字符由 \w 匹配。 Source
  • @NiettheDarkAbsol:我同意这不是一个好主意。更新了答案。
  • 感谢 Amal 和 Niet。正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2011-06-22
相关资源
最近更新 更多