PHP mb_eregi_替换不起作用

PHP mb_eregi_替换不起作用,php,regex,utf-8,Php,Regex,Utf 8,我试图在PHP中匹配整个UTF-8单词。这就是我试图做到的: <?php $string = 'DS DAMAT TAKIM ELBİSE (GOLD)'; $search = 'takım elbise'; $replace = 'TakımElbise'; $result = mb_eregi_replace('/\b'.$search.'\b/ui', $replace, $string); echo $result; echo

我试图在PHP中匹配整个UTF-8单词。这就是我试图做到的:

<?php

    $string = 'DS DAMAT TAKIM ELBİSE (GOLD)';
    $search = 'takım elbise';
    $replace = 'TakımElbise';

    $result = mb_eregi_replace('/\b'.$search.'\b/ui', $replace, $string);
    echo $result;

    echo preg_match('/\b'.$search.'\b/ui', $replace);
?>
没有结果。

怎么样:

$string = 'DS DAMAT TAKIM ELBİSE (GOLD)';
//                           ^__ this isn't an I
$search = 'takım elbİse';
//                  ^__ this isn't an I
$replace = 'TakımElbise';

$result = preg_replace("/\b$search\b/ui", $replace, $string);
echo $result;
我刚刚将搜索字符串中的I改为İ。您可能希望使用键盘上的小写字母“我没有”

请参见此处的注释:

与preg_replace不同,mb_ereg_replace不使用分隔符

preg_替换的示例:

$data=preg_replace/[^A-Za-z0-9\.-]/,$data

使用mb_ereg_替换的示例: $data=mb\U ereg\U替换[^A-Za-z0-9\.-],$data


另外,不要使用ui标志。

@Fred ii-抱歉,我有编辑我不确定您试图获得的结果,但请尝试echo preg_replace'/'.$search'./iu'.“$1'.$replace;我只是借用了一个例子,关于echo preg_replace'/'.$f./iu','$1',$s;你想做的只是找到一个匹配项,而不是替换它。如果您在代码周围有一个条件语句,它可能会起作用。@Fred ii-很抱歉,您根本没有使用$string,我想替换它。我正在通过从网页获取字符串scraping@torayeff:是的,但是您必须更改搜索模式,而不是输入字符串,除非我遗漏了什么。如何构建搜索模式和替换字符串?İ的小写字母必须是i。我想问题在于PHP mb_u函数。似乎大小写字母之间没有一对一的对应关系。
$string = 'DS DAMAT TAKIM ELBİSE (GOLD)';
//                           ^__ this isn't an I
$search = 'takım elbİse';
//                  ^__ this isn't an I
$replace = 'TakımElbise';

$result = preg_replace("/\b$search\b/ui", $replace, $string);
echo $result;