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 に答える