将 ereg_match 替换为 preg_match

发布于 2024-10-14 04:32:59 字数 279 浏览 3 评论 0原文

亲爱的先生/女士 我如何用 preg_replace 或 str_replace 替换已弃用的 ereg_replace 并且仍然具有与下面的代码相同的功能?

return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

///this doesnt work

return preg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

有聪明人知道吗?

Dear Sir/m'am
How can i replace ther deprecated ereg_replace with preg_replace or str_replace
and still have the same functionality as in the code below?

return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

///this doesnt work

return preg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

Anyone smarter have a clue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

顾冷 2024-10-21 04:32:59

试试这个:

return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

变成

return preg_replace("/^(.*)%%number%%(.*)$/","\\1$i\\2",$number);

注意正则表达式周围的 / 。

Try this:

return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

becomes

return preg_replace("/^(.*)%%number%%(.*)$/","\\1$i\\2",$number);

Note the / around the regex.

苯莒 2024-10-21 04:32:59

我将采用阅读精彩手册的方法。

PHP 手册有一个部分用于从 POSIX Regex 迁移至PCRE。

  1. PCRE 函数要求模式用分隔符括起来。
  2. 与 POSIX 不同,PCRE 扩展没有专门的函数
    不区分大小写的匹配。反而,
    这是使用 /i 模式支持的
    修饰符。其他模式修饰符是
    也可用于更改
    匹配策略。
  3. POSIX 函数找到最长的最左边匹配,但是
    PCRE 在第一个有效匹配处停止。
    如果字符串根本不匹配
    没有区别,但如果匹配
    它可能会对双方产生巨大的影响
    结果匹配和匹配
    速度。为了说明这种差异,
    考虑以下示例
    《掌握正则表达式》作者:
    杰弗里·弗里德尔.使用模式
    一个(自我)?(自给自足)?于
    用 PCRE 串自己足够
    会导致匹配自己,但是
    使用 POSIX 结果将是
    满弦自足。两个都
    (子)字符串与原始字符串匹配
    字符串,但 POSIX 要求
    最长的结果。

祝你好运,
阿林

I'll go with a read the fabulous manual approach.

The PHP Manual has a section for moving from POSIX Regex to PCRE.

  1. The PCRE functions require that the pattern is enclosed by delimiters.
  2. Unlike POSIX, the PCRE extension does not have dedicated functions for
    case-insensitive matching. Instead,
    this is supported using the /i pattern
    modifier. Other pattern modifiers are
    also available for changing the
    matching strategy.
  3. The POSIX functions find the longest of the leftmost match, but
    PCRE stops on the first valid match.
    If the string doesn't match at all it
    makes no difference, but if it matches
    it may have dramatic effects on both
    the resulting match and the matching
    speed. To illustrate this difference,
    consider the following example from
    "Mastering Regular Expressions" by
    Jeffrey Friedl. Using the pattern
    one(self)?(selfsufficient)? on the
    string oneselfsufficient with PCRE
    will result in matching oneself, but
    using POSIX the result will be the
    full string oneselfsufficient. Both
    (sub)strings match the original
    string, but POSIX requires that the
    longest be the result.

Good luck,
Alin

兔姬 2024-10-21 04:32:59

PHP 中的 preg_ 函数使用的 Perl 兼容正则表达式需要模式字符串中的分界字符,定义实际字符串模式的开始和结束位置,以及额外功能(例如不区分大小写)的属性所在的位置。

例如:

$pattern = "/dog/i"; // Search pattern for "dog", case insensitive.
$replace = "cat";

$subject = "Dogs are cats.";

$result = preg_replace($pattern, $replace, $subject);

Perl Compatible Regular Expressions, used by the preg_ functions in PHP require a demarcation character in the pattern string, defining where the actual string pattern starts and ends, and where attributes for extra functionality, such as case insensitivity, is.

For example:

$pattern = "/dog/i"; // Search pattern for "dog", case insensitive.
$replace = "cat";

$subject = "Dogs are cats.";

$result = preg_replace($pattern, $replace, $subject);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文