php での正規表現の書き方
原文には次の可能性があります:
[font="microsoft yahei" onclick="alert('b')"]中華人民共和国[/font]
[font= "abc" onclick="alert('b')"]中華人民共和国[/font]
[font="microsoft yahei"]中華人民共和国[/font]
[font= abc onclick="alert ('b')"]中華人民共和国[/font]
[font=abc]中華人民共和国[/font]
このように捉えたいと思います。 font=以降の文字だけを取り出していますが、onclick以降の文字(必ずしもonclickである必要はなく、onfocusなどでも構いません)を除くと、「中華人民共和国」という文字もあります。
フォント名のみが取り出されるという意味ですが、フォント名には引用符を含めることができますが、フォントの後ろに文字がある場合は取り出されません。
正規表現の書き方を見つけてください。
このように書くとonclickと以下の文字が得られます。
/[font=(.*?)](.*?)[/font]/i
-----ソリューションのアイデア----------- ----------
/[font="([^"] ?)". ?](.*?)[/font]/i
試してみる
------解決策----------------------
echo preg_replace('/[font="( [^ "] ?)".*?](.*?)[/font]/i', '$1@@@@$2', '[font="microsoft yahei"]中華人民共和国[/font]' ) ;
------解決策のアイデア----------------------
[^"]
[] の内側は一連の文字
^ ですが、
は二重引用符以外の他の文字が一致することを意味します。実際には、
--- - する必要はありません。 ------------------------------------------------- - -------------------------
[font=microsoft]中華人民共和国[/font]
'/[font ="*([^"] )"*.*?](.*?)[/font]/i'