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

时间:2017-02-22 22:04:57

标签: php regex preg-replace multibyte

我有一些正在使用的正则表达式,我现在想要用于多字节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. 如上所述,我还需要一个不区分大小写的模式......

  3. 我会非常感谢帮助:) 问候,谢谢!

1 个答案:

答案 0 :(得分:3)

使用mb_eregi_replace() php函数。

  

mb_eregi_replace - 使用忽略大小写的多字节支持替换正则表达式

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

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

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

  

选项

     

匹配条件可以通过option参数设置。如果为此参数指定了i,则将忽略该大小写。如果指定了x,则将忽略空格。如果指定了m,则匹配将在多行模式下执行,换行符将包含在'。'中。如果指定了p,则匹配将在POSIX模式下执行,换行符将被视为普通字符。如果指定了e,则替换字符串将被计算为PHP表达式。

希望它有所帮助。

修改

对于问题#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);