如何制作php mb_str_ireplace()

如何制作php mb_str_ireplace(),php,string,replace,Php,String,Replace,如何做这样的事情: mb_str_ireplace( $search, $openTag.$replace.$closeTag, $subject, "UTF-8" ); mb_str_ireplace($search,$replace,$subject,“UTF-8”) 这个函数在PHP中不存在,但我需要具有不区分大小写且与UTF-8兼容的函数 例如: 我想更改$search->$replace: GŁOŚNIKI -> speakers; Głośni

如何做这样的事情:

mb_str_ireplace(
    $search,
    $openTag.$replace.$closeTag,
    $subject,
    "UTF-8"
);
mb_str_ireplace($search,$replace,$subject,“UTF-8”)

这个函数在PHP中不存在,但我需要具有不区分大小写且与UTF-8兼容的函数

例如: 我想更改$search->$replace:

GŁOŚNIKI -> speakers;
Głośniki -> speakers;
głośniki -> speakers;
gŁoŚniki -> speakers;
编辑:

德克塞的回答

$text=preg_replace('/głośniki/ui','speakers',$text)

这对以前的病例很好。但我还有一个问题

我想将所有以前版本的
“głośniki”
更改为
głośniki

u
标志用于UTF-8处理,
i
标志用于区分大小写


u
标志用于UTF-8处理,
i
用于大小写不敏感。

根据您的编辑,您希望deceze的方法可用于动态变量,而无需声明所有变量。这是非常简单的,包括:


根据您的编辑,您希望deceze的方法可用于动态变量,而无需声明所有变量。这是非常简单的,包括:


未来用户注意:这说明了UTF-8中的文本(这似乎也是OP在他的
mb_stru_ireplace
测试中使用的)。没有正则表达式如何解决这个问题?如果指针行中的字符寄存器不能更改(!)。请注意:这说明了UTF-8中的文本(这似乎也是OP在他的
mb\u stru\u ireplace
test中使用的)。没有正则表达式如何解决此问题?如果指针行中的字符寄存器不能更改(!)。根据您的编辑,只需替换为
głośniki
?głośniki不是常量字。foreach($words as$word){…$search=$word;$replace=mb_strtolower($word,“UTF-8”)}根据您的编辑,只需替换为
głośniki
?głośniki不是const word。foreach($words作为$word){…$search=$word;$replace=mb_strtolower($word,“UTF-8”);)
mb_str_ireplace(
    $search,
    $openTag.$replace.$closeTag,
    $subject,
    "UTF-8"
);
$text = preg_replace('/głośniki/ui', 'speakers', $text);
<?php

header('Content-type: text/plain;');

$string = 'I have a string with a gŁoŚniki word. Pretty interesting';
$word = 'Głośniki';

$string = preg_replace_callback('/(' . preg_quote($word, '/') . ')/ui', function($match) {
    return '<speakers>' . mb_strtolower($match[1], 'UTF-8') . '</speakers>';
}, $string);

var_dump($string);
string(79) "I have a string with a <speakers>głośniki</speakers> word. Pretty interesting"