php – 正则表达式:尝试使用非重音关键字修改重音句子

我正在尝试使用非重音关键字修改带重音的句子,以使这些单词变为粗体.

所以这就是我的问题如何分裂.

1 – 我有重音和非重音句子(我有两个可用,但更喜欢只在内存中加重),例如:

>重音版:“C’estauneuvièmeétage”
> unaccented版本:“C’est au neuvieme etage”

2 – 我有非重音关键字:

>“neuvieme”
>“etage”

3 – 我尝试获得以下重音结果:“C’est au [b]neuvième[/ b] [b]étage[/ b]”

我可以找到“复杂”的解决方案,但是我无法在那时找到我是否可以使用正则表达式以更直接的方式实现这一点.我这样搜索,因为我需要快速.

如果有人对此有所了解,我会很高兴看到它.

谢谢.

编辑解决方案.

Qtex建议的想法有效.

我在preg_replace中使用了以下模式:

$pattern = array( "'a'","'c'","'e'","'i'","'n'","'o'","'u'","'y'" );

$replace = array( "(a|à|á|â|ã|ä|A|À|Á|Â|Ã|Ä)",
                  "(c|ç|C|Ç)",
                  "(e|è|é|ê|ë|E|È|É|Ê|Ë)",
                  "(i|ì|í|î|ï|I|Ì|Í|Î|Ï)",
                  "(n|ñ|N|Ñ)",
                  "(o|ò|ó|ô|õ|ö|O|Ò|Ó|Ô|Õ|Ö)",
                  "(u|ù|ú|û|ü|U|Ù|Ú|Û|Ü)",
                  "(y|ý|ÿ|Y|Ý)");

我不得不使用管道字符将它们分开,而不是将它们分组成方括号,因为重音字符实际上变成了多个字符…所以它不起作用.

最佳答案 一个简单直接的解决方案是在你的关键字替换:

> a与[aáà]
> e [eéè]
>等等您要处理的所有重音字符

然后在正则表达式中使用新关键字来匹配和替换:

preg_replace('/f[oóò][oóò]|b[aáà]r/i', '[b]$0[/b]', $str)
点赞