使 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
它不起作用。所以这是我的问题:
如何在 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);
如上所述,我还需要一个不区分大小写的模式...
如果能提供帮助,我将不胜感激:)
问候,谢谢!
使用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);
我有一些正则表达式模式,我现在想将它们用于多字节 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);
如上所述,我还需要一个不区分大小写的模式...
如果能提供帮助,我将不胜感激:) 问候,谢谢!
使用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);