我有一些正在使用的正则表达式,我现在想要用于多字节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
它没有用。所以这是我的问题:
如何在mb_ereg_replace中使用/i
或如何使模式区分不敏感?
我还需要mb_ereg_replace的那些模式,但不知道......? - 有人能帮帮我吗? - 我现在想到了mb_ereg_replace ......
trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $string)))
preg_replace('~\b(?:' . implode('|', $delete) . ')\b~i', '', $string);
如上所述,我还需要一个不区分大小写的模式......
我会非常感谢帮助:) 问候,谢谢!
答案 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()
。只是不需要在模式中使用分隔符。
即。 :
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)));
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);