gpt4 book ai didi

PHP-REGEX : accented letters matches non-accented ones, 反之亦然。如何做到这一点?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:30 25 4
gpt4 key购买 nike

我想做典型的高亮代码。所以我有类似的东西:

$valor = preg_replace("/(".$_REQUEST['txt_search'].")/iu", "<span style='background-color:yellow; font-weight:bold;'>\\1</span>", $valor);

现在,请求词可能类似于“josé”。有了它,我还想突出显示“jose”或“JOSÉ”或“José”等。

对于这个表达式,如果我写“josé”,它会匹配“josé”和“JOSÉ”(以及所有大小写变体)。它始终只匹配重音变体。如果我搜索“jose”,它会匹配“JOSE”、“jose”、“Jose”,但不匹配重音符号。所以我部分满足了我的要求,因为我对重音和非重音分别不区分大小写。

我需要它完全结合,这意味着重音(unicode)不敏感,所以我可以搜索“jose”,并突出显示“josé”,“josÉ”,“José”,“JOSE”,“JOSÉ”,“JoSé” , ...

我不想替换单词的重音,因为当我在屏幕上打印它时,我需要看到真正的单词。

有什么想法吗?

谢谢!

最佳答案

您可以尝试创建一个函数来根据您的 txt_search 创建您的正则表达式,将任何可能的匹配替换为所有可能的匹配,如下所示:

function search_term($txt_search) {
$search = preg_quote($txt_search);

$search = preg_replace('/[aàáâãåäæ]/iu', '[aàáâãåäæ]', $search);
$search = preg_replace('/[eèéêë]/iu', '[eèéêë]', $search);
$search = preg_replace('/[iìíîï]/iu', '[iìíîï]', $search);
$search = preg_replace('/[oòóôõöø]/iu', '[oòóôõöø]', $search);
$search = preg_replace('/[uùúûü]/iu', '[uùúûü]', $search);
// add any other character

return $search;
}

然后您将结果用作您的 preg_replace 的正则表达式。

关于PHP-REGEX : accented letters matches non-accented ones, 反之亦然。如何做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com