正規表現は問題なく機能します。問題は、2番目のものも最初のものと一致することです!
を渡すとA#m
、最初の正規表現はこれを次のように変更します
<span style="color:#910202;">A#m</span></a>
(ちなみに、これは有効なHTMLフラグメントではありません。そこで何をしているの</a>
でしょうか?)
これは、2番目の正規表現への入力になります。その1つが表示され、A#
それを置き換えると、最終結果は次のようになります。
<span style="color:#910202;"><span style="color:#910202;">A#</span></a>m</span></a>
おそらくあなたが期待するものではありません。
1つの解決策は、両方の式を1つに単純に統合することです。
preg_replace('/\b(A#m?)\b/','<span style="color:#910202;">$1</span></a>',$content);
更新:多くの異なるコードを認識する正規表現を作成する場合は、交互に使用します。
preg_replace('/\b(A#(maj7|sus2|sus4)?)\b/',
'<span style="color:#910202;">$1</span>',
$content);
(A#(maj7|sus2|sus4)?)
拡張できるようにするための簡単な説明:この正規表現は、A#
単独で、またはオプションで(?
)の後に(s)、、、のいずれかが続く場合に一致します。コードのすべてのオプションが何であるかはわかりませんが、リンク先のリファレンス/チュートリアルを読むことをお勧めします。基本だけを学ぶことはあなたに使うための多くの力を与えます。|
maj7
sus2
sus4