4

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

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

1 - 我有重音和无重音的句子(我有两个可用的,但更愿意只在记忆中保留重音),例如:

  • 重音版:“C'est au neuvième étage”
  • 无口音版本:“C'est au neuvieme etage”

2 - 我有没有重音的关键字:

  • “新人”
  • “记事本”

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

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

4

1 回答 1

2

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

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

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

preg_replace('/f[oóò][oóò]|b[aáà]r/i', '[b]$0[/b]', $str)
于 2013-04-11T20:23:55.980 回答