我发现了很多关于这个的问题,但没有一个能帮我解决我的特殊问题.情况:我想用类似“blablebli”的字符串搜索字符串,并且能够在文本中找到与所有可能的重音变体(“blablebli”,“blábleblí”,“blâblèbli”等等)的匹配.

我已经做了相反的解决方法(找到一个没有我写的可能的重音的单词).但我无法弄清楚实现我想要的方式.

这是我的工作代码. (相关部分,这是foreach的一部分,所以我们只看到一个单词搜索):

$word="something";

$word = preg_quote(trim($word)); //Just in case

$word2 = $this->removeAccents($word); // Removed all accents

if(!empty($word)) {

$sentence = "/(".$word.")|(".$word2.")/ui"; // Now I'm checking with and without accents.

if (preg_match($sentence, $content)){

echo "found";

}

}

还有我的removeAccents()函数(我不确定我是否用preg_replace()覆盖了所有可能的重音符号.到目前为止它正在工作.如果有人检查我是否遗漏了什么,我将不胜感激:

function removeAccents($string)

{

return preg_replace('/[\`\~\']/', '', iconv('UTF-8', 'ASCII//TRANSLIT', $string));

}

我想避免的是什么:

>我知道我可以检查我的$word并替换所有的[aàáãââ]和

与其他字母相同的东西,但我不知道……它看起来像一个痘痘

矫枉过正.

>并确定我可以在我的if中使用我自己的removeAccents()函数

声明检查$内容没有重音,如:

if (preg_match($sentence, $content) || preg_match($sentence, removeAccents($content)))

但我在第二种情况下遇到的问题是我希望在比赛结束后发现这个词.所以我无法改变我的内容.

有没有办法改进我的preg_match()以包含可能的重音字符?或者我应该使用上面的第一个选项?

最佳答案 我会分解字符串,这样可以更容易地删除有问题的字符,类似于以下内容:

// Convert unicode input to NFKD form.

$str = Normalizer::normalize("blábleblí", Normalizer::FORM_KD);

// Remove all combining characters (https://en.wikipedia.org/wiki/Combining_character).

var_dump(preg_replace('/[\x{0300}-\x{036f}]/u', "", $str));

php正则表达式 重复字符,php正则表达式匹配可能的重音字符相关推荐

  1. python正则匹配括号内任意字符,python 正则匹配 获取括号内字符

    一.需求 * 提取字典中的[]内的字符,生成可以导入到五笔词库中的txt文件. 原文件: 生成后的结果: 实现方式 前言 因为正则表达式语法很难读,因此本次程序以多次的方式来讲解. 一.提取[]内内容 ...

  2. php 正则匹配是否存在字符,php正则匹配不包含某个字符有什么实现方法

    php正则匹配不包含某个字符有什么实现方法 发布时间:2020-08-10 10:34:58 来源:亿速云 阅读:75 作者:Leah 这期内容当中小编将会给大家带来有关php正则匹配不包含某个字符有 ...

  3. 字符串匹配 - 正则表达式

    1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...

  4. 正则表达式中grep,sed的用法(包括基本的正则表达式和扩展的正则表达式)

    一 正则表达式   Basic REGEXP:基本正则表达式 Extended REGEXP:扩展正则表达式 (正则表达式是使得计算机变成智能化的重要途径) 1.1 基本正则表达式 . : 表示匹配任 ...

  5. php正则表达式 包含特殊字符,php正则表达式的特殊字符含义

    一篇关于正则表达式特殊字符含义的文章,希望对大家有所帮助. 字符/ 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释. 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也 ...

  6. js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global)...

    js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global) 一.总结 1. ...

  7. java 匹配任意字符_正则表达式匹配任意字符(包括换行符)

    正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符.但有时候我们需要匹配包括换行符在内的字符,经过一番搜索,发现了几种正则表达式匹配任意字符 ...

  8. 学习正则表达式 - 匹配 Unicode 和其他字符

    目录 一.匹配 Unicode 字符 1. 匹配 emoji 符号 (1)确定 emoji 符号的 Unicode 范围 (2)emoji 符号的存储 (3)正则表达式匹配 2. 匹配中文 (1)确定 ...

  9. python3正则表达式匹配但不包括最后一个字符_正则表达式匹配不包含某些字符串的技巧...

    经常我们会遇到想找出不包含某个字符串的文本,程序员最容易想到的是在正则表达式里使用,^(hede)来过滤"hede"字串,但这种写法是错误的.我们可以这样写:[^hede],但这样 ...

最新文章

  1. python采集cpu信息
  2. 负样本修正:既然数据是模型的上限,就不要破坏这个上限
  3. 一:Greenplum5.10.2 生产环境安装配置 (系统初始化、安装准备)
  4. Git的安装(附安装包)
  5. 连通块(信息学奥赛一本通-T1335)
  6. 数据库服务器操作系统查询命令行,MySQL命令行客户端命令
  7. Mysql CMAKE编译参数详解
  8. 在大项目中,实施顾问主要负责什么具体工作?
  9. 悄悄地我走了 著名的非自然死亡
  10. 二手车预测part1
  11. Photoshop(简称Ps)制作个人logo
  12. 一名3年工作经验的程序员应该具备的技能 !
  13. Permission denied: user=administrator, access=WRITE 问题解决
  14. 学好C/C++编程,走遍天下都不怕
  15. 什么时候可以找回民族的自尊,不再崇洋媚外?--从华晨老总骏捷发布会的一番话说起...
  16. hdu4676 ------麦比乌斯反演分块
  17. 正则表达式学习的一天
  18. 纯CSS实现导航栏下拉动画效果
  19. system.exe病毒探秘
  20. 字符串:字符串顺序比较、11-2删除重复元素、字符串生成器、着急的WYF(不同子串个数)

热门文章

  1. 复数基础——数组_1
  2. 河南省初三计算机考试题库,河南省计算机等级考试—VB题库
  3. oracle延迟约束不起作用,Oracle可延迟约束Deferable的使用
  4. 【Level 08】U07 Mixed Feelings L6 State of the Nation
  5. 【英语学习】【WOTD】bread 释义/词源/示例
  6. Intel Core Enhanced Core架构/微架构/流水线 (6) - 指令预译码/指令队列/指令译码
  7. (转)Delaunay三角剖分
  8. 搭建LNMP基础框架
  9. vb mysql添加字段_怎么用VB向SQL数据库中添加记录
  10. SPH(光滑粒子流体动力学)流体模拟实现三:Marching Cube算法(2)