Laravel 变音符号不敏感搜索

阿司匹林

我尝试制作一个接受查询参数的 API 来过滤以下链接中的结果api/results/search?somefield=er我期待的结果应该是例如:

  • 利特ATURE
  • Réalis ST
  • Procur ST
  • ALT

简而言之,Google Chrome 的实际版本正是我所需要的,当您按下CTRL+FGoogle Chrome 并尝试er在此页面上搜索https://fr.lipsum.com/ 时,您将获得包含以下内容的全文搜索érer

我使用的是 Laravel Collection 而不是 Eloquent。

为了使搜索案例不敏感,PHP 已经为这种案例提供了一个名为stristr($haystack, $needle)的函数

foreach (request()->except('perPage') as $key => $value) {
    $results = $results->filter(function ($item) use ($key, $value) {
        return false !== stristr($item->$key, $value);
    });
}

现在我被困在了这一点上,关于如何正确搜索变音字母(法语/西班牙语/等口音)。

我已经制作了一个字符列表,但不知道如何使用代码。

return [
    'siblings' => [
        'A'  => ['À', 'Á', 'Â', 'Ã', 'Å', 'Ǻ', 'Ā', 'Ă', 'Ą', 'Ǎ', 'Α', 'Ά', 'Ả', 'Ạ', 'Ầ', 'Ẫ', 'Ẩ', 'Ậ', 'Ằ', 'Ắ', 'Ẵ', 'Ẳ', 'Ặ', 'А'],
        'B'  => ['B'],
        'C'  => ['Ç', 'Ć', 'Ĉ', 'Ċ', 'Č'],
        'D'  => ['Ð', 'Ď', 'Đ', 'Δ'],
        'E'  => ['È', 'É', 'Ê', 'Ë', 'Ē', 'Ĕ', 'Ė', 'Ę', 'Ě', 'Ε', 'Έ', 'Ẽ', 'Ẻ', 'Ẹ', 'Ề', 'Ế', 'Ễ', 'Ể', 'Ệ', 'Е', 'Э'],
        'F'  => ['ƒ'],
        'G'  => ['Ĝ', 'Ğ', 'Ġ', 'Ģ'],
        'H'  => ['Ĥ', 'Ħ'],
        'I'  => ['Ì', 'Í', 'Î', 'Ï', 'Ĩ', 'Ī', 'Ĭ', 'Ǐ', 'Į', 'İ', 'Η', 'Ή', 'Ί', 'Ι', 'Ϊ', 'Ỉ', 'Ị'],
        'J'  => ['Ĵ'],
        'K'  => ['Ķ', 'Κ', 'К'],
        'L'  => ['Ĺ', 'Ļ', 'Ľ', 'Ŀ', 'Ł', 'Λ', 'Л'],
        'M'  => [''],
        'N'  => ['Ñ', 'Ń', 'Ņ', 'Ň', 'Ν'],
        'O'  => ['Ò', 'Ó', 'Ô', 'Õ', 'Ō', 'Ŏ', 'Ǒ', 'Ő', 'Ơ', 'Ø', 'Ǿ', 'Ο', 'Ό', 'Ω', 'Ώ', 'Ỏ', 'Ọ', 'Ồ', 'Ố', 'Ỗ', 'Ổ', 'Ộ', 'Ờ', 'Ớ', 'Ỡ', 'Ở', 'Ợ', 'О'],
        'P'  => [''],
        'R'  => ['Ŕ', 'Ŗ', 'Ř'],
        'S'  => ['Ś', 'Ŝ', 'Ş', 'Ș', 'Š', 'Σ'],
        'T'  => ['Ț', 'Ţ', 'Ť', 'Ŧ', 'Τ', 'Т'],
        'U'  => ['Ù', 'Ú', 'Û', 'Ũ', 'Ū', 'Ŭ', 'Ů', 'Ű', 'Ų', 'Ư', 'Ǔ', 'Ǖ', 'Ǘ', 'Ǚ', 'Ǜ', 'Ủ', 'Ụ', 'Ừ', 'Ứ', 'Ữ', 'Ử', 'Ự'],
        'X'  => [''],
        'Y'  => ['Ý', 'Ÿ', 'Ŷ', 'Υ', 'Ύ', 'Ϋ', 'Ỳ', 'Ỹ', 'Ỷ', 'Ỵ'],
        'W'  => ['Ŵ'],
        'Z'  => ['Ź', 'Ż', 'Ž', 'Ζ'],
        'AE' => ['Ä', 'Æ', 'Ǽ'],
        'UE' => ['Ü'],
        'IJ' => ['IJ'],
        'OE' => ['Ö', 'Œ'],
        'TH' => ['þ'],
        'SS' => ['ß'],
        'KS' => ['ξ'],
    ]
];

如果有人能给我一点我应该使用什么方法,我将不胜感激。我相信我需要使用preg_match,但也许有更简单的方法类似于stristr()?

感谢任何给定的想法。

伪经

你实际上不需要创建你自己的列表 Laravel 有一个方法Str::ascii可以将非 ascii 字符转换为它们的 ascii 等价物,所以你可以这样做:

foreach (request()->except('perPage') as $key => $value) {
    $results = $results->filter(function ($item) use ($key, $value) {
        return false !== stristr(\Str::ascii($item->$key), \Str::ascii($value));
    });
}

Str::ascii该语言还有第二个参数,尽管从我所见,您只需要将它用于 bg(保加利亚语)或 de(德语)

如果您需要检查整个列表是什么,您可以查看源代码,其中还提到它基于Stringy库。

底线是不要写你自己的清单,除非已经存在的清单对你来说还不够。

请注意,还有使用iconv("UTF-8", "ASCII//TRANSLIT", $string)which 将音译非 ascii 字符的选项更多信息请访问iconv

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MarkLogic变音符号不敏感的代码段

来自分类Dev

从Realm数据库查询中获取变音符号不敏感的结果

来自分类Dev

如何比较两个字符串的大小写和变音符号不敏感?

来自分类Dev

正则表达式与元字符在Swift中的大小写和变音符号不敏感匹配

来自分类Dev

如何比较两个字符串的大小写和变音符号不敏感?

来自分类Dev

Ruby超级不敏感的正则表达式,用于将学校名称与重音符号和其他变音符号进行匹配

来自分类Dev

AngularJs搜索并忽略变音符号

来自分类Dev

忽略变音符号的搜索功能

来自分类Dev

Cscope不敏感搜索

来自分类Dev

搜索没有变音符号的字符串值

来自分类Dev

Laravel雄辩的大小写不敏感数据

来自分类Dev

laravel不敏感,例如查询生成器-oracle

来自分类Dev

使用`locate`命令搜索变音符号/重音符号

来自分类Dev

MSSQL报价不敏感搜索

来自分类Dev

从核心数据中提取对象的变音符号敏感排序?

来自分类Dev

iOS CoreData fetchRequest具有顺序列的变音符号敏感

来自分类Dev

带有变音符号敏感的 TextCriteria。Spring Data MongoDB 1.10.9

来自分类Dev

RedirectToAction()打破变音符号

来自分类Dev

不能写变音符号

来自分类Dev

Java删除变音符号

来自分类Dev

搜索Sqlite全文搜索不带变音符号的阿拉伯语

来自分类Dev

搜索Sqlite全文搜索不带变音符号的阿拉伯语

来自分类Dev

在MySql中对口音不敏感的搜索

来自分类Dev

变音符号不区分大小写的搜索环回

来自分类Dev

如何在SQL Lite中执行阿拉伯搜索而忽略变音符号?

来自分类Dev

熊猫通过数据框搜索缺少变音符号的单词

来自分类Dev

搜索在mysql中有变音符号的阿拉伯语单词

来自分类Dev

无法在带有目标C的SQLite中执行不区分重音/变音符号的搜索

来自分类Dev

Python:删除希腊变音符号/重音符号

Related 相关文章

  1. 1

    MarkLogic变音符号不敏感的代码段

  2. 2

    从Realm数据库查询中获取变音符号不敏感的结果

  3. 3

    如何比较两个字符串的大小写和变音符号不敏感?

  4. 4

    正则表达式与元字符在Swift中的大小写和变音符号不敏感匹配

  5. 5

    如何比较两个字符串的大小写和变音符号不敏感?

  6. 6

    Ruby超级不敏感的正则表达式,用于将学校名称与重音符号和其他变音符号进行匹配

  7. 7

    AngularJs搜索并忽略变音符号

  8. 8

    忽略变音符号的搜索功能

  9. 9

    Cscope不敏感搜索

  10. 10

    搜索没有变音符号的字符串值

  11. 11

    Laravel雄辩的大小写不敏感数据

  12. 12

    laravel不敏感,例如查询生成器-oracle

  13. 13

    使用`locate`命令搜索变音符号/重音符号

  14. 14

    MSSQL报价不敏感搜索

  15. 15

    从核心数据中提取对象的变音符号敏感排序?

  16. 16

    iOS CoreData fetchRequest具有顺序列的变音符号敏感

  17. 17

    带有变音符号敏感的 TextCriteria。Spring Data MongoDB 1.10.9

  18. 18

    RedirectToAction()打破变音符号

  19. 19

    不能写变音符号

  20. 20

    Java删除变音符号

  21. 21

    搜索Sqlite全文搜索不带变音符号的阿拉伯语

  22. 22

    搜索Sqlite全文搜索不带变音符号的阿拉伯语

  23. 23

    在MySql中对口音不敏感的搜索

  24. 24

    变音符号不区分大小写的搜索环回

  25. 25

    如何在SQL Lite中执行阿拉伯搜索而忽略变音符号?

  26. 26

    熊猫通过数据框搜索缺少变音符号的单词

  27. 27

    搜索在mysql中有变音符号的阿拉伯语单词

  28. 28

    无法在带有目标C的SQLite中执行不区分重音/变音符号的搜索

  29. 29

    Python:删除希腊变音符号/重音符号

热门标签

归档