【问题标题】:How to convert a tricky ereg_replace to preg_replace? [duplicate]如何将棘手的 ereg_replace 转换为 preg_replace? [复制]
【发布时间】:2013-02-21 22:48:50
【问题描述】:

我知道对此有很多问题,但我没有发现任何与我的问题相符的内容。我想将此表达式转换为 preg_replace:

$a = ereg_replace('[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*','', $a);

到目前为止尝试了这些但没有奏效:

$a = ereg_replace('/[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*/','', $a);
$a = ereg_replace('|[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*|','', $a);

这是第二行的错误信息:

Warning: preg_replace(): Unknown modifier '}' in

【问题讨论】:

  • 尝试preg_quoteing 你的角色类中的东西。
  • 在第二个中,您在模式内使用分隔符而不引用它(就在} 之前)
  • 转义分隔符。或使用字符列表中未出现的分隔符,例如°。如果一切都失败了,preg_match("\001[....]\001" 总是一个替代方案。

标签: php posix-ere


【解决方案1】:

对于分隔匹配字符串的字符,使用不在匹配字符串中的字符,或者转义字符串中分隔符的使用,例如

$a = ereg_replace('/[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+@([.]?[a-zA-Z0-9_\/-])*/','', $a);

那个特定的例子有点难读;我会找到一个根本不用的字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 2013-02-10
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多