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

时间:2013-04-11 19:19:16

标签: php regex

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

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

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

  • 重音版:“C'estauuvivièmeétage”
  • unaccented version:“C'est au neuvieme etage”

2 - 我有 unaccented 关键字:

  • “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|Ý)");

我必须使用竖线字符将它们分开,而不是将它们分组到方括号中,因为重音字符实际上变成了多个字符...所以它不起作用。

1 个答案:

答案 0 :(得分:2)

一个简单直接的解决方案是在您的关键字替换:

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

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

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