使 mb_ereg_replace 不区分大小写并使用其他正则表达式? (PHP)

Make mb_ereg_replace case insensitive and use other regex? (PHP)

我有一些正则表达式模式,我现在想将它们用于多字节 preg_replace 函数。我已经发现 mb_ereg_replace 没有使用分隔符:

PHP mb_ereg_replace not replacing while preg_replace works as intended

我现在的问题是,在我的 mb_ereg_replace 函数与 \b 一起工作后,我怎样才能让它也不区分大小写?我的实际代码是:

$myTitle = 'Wie geht es dir';

$string = mb_ereg_replace('\bWie geht es dir\b/i', 'Hat geklappt ', $myTitle);

echo $string;

但是对于 /i 它不起作用。所以这是我的问题:

  1. 如何在 mb_ereg_replace 处使用 /i 或者如何使模式不区分大小写?

  2. 我也需要 mb_ereg_replace 的那些模式,但不知道...? - 有人能帮帮我吗? - 我现在知道 mb_ereg_replace...

    1. trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $string)))

    2. preg_replace('~\b(?:' . implode('|', $delete) . ')\b~i', '', $string);

    3. 如上所述,我还需要一个不区分大小写的模式...

如果能提供帮助,我将不胜感激:) 问候,谢谢!

使用mb_eregi_replace()php函数。

mb_eregi_replace — Replace regular expression with multibyte support ignoring case

或者使用 mb_ereg_replace() 选项 i 作为最后一个参数:

$string = mb_ereg_replace('\bWie geht es dir\b', 'Hat geklappt ', $myTitle, 'i');

来自 php 手册(mb_ereg_remplace() 最后一个参数):

option

Matching condition can be set by option parameter. If i is specified for this parameter, the case will be ignored. If x is specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. If e is specified, replacement string will be evaluated as PHP expression.

希望对您有所帮助。

编辑

对于问题 #2:

是的,这些模式适用于 mb_ereg_replace()mb_eregi_replace()。只是不需要在模式中使用定界符。

即:

1。 trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $string)));

将是:

trim(mb_ereg_replace('\s\s+', ' ', str_replace("\n", " ", $string), 'i'));
// or
trim(mb_eregi_replace('\s\s+', ' ', str_replace("\n", " ", $string)));

2。 preg_replace('~\b(?:' . implode('|', $delete) . ')\b~i', '', $string);

将是:

mb_ereg_replace('\b(?:' . implode('|', $delete) . ')\b', '', $string, 'i');
// or
mb_eregi_replace('\b(?:' . implode('|', $delete) . ')\b', '', $string);