前提・実現したいこと
$content というWordPressの投稿の中から、Twitterのスクリーンネーム(@から始まり、英数字とアンダーバーで1-15文字)を検索し、それを<a href="https://twitter.com/user">@user</a>に置換する。というプログラムを作っています。
しかし下のように、文字列の中に予めリンクが含まれると二重にリンクが貼られてしまいます。
aタグの中の@userには置換を行わず、aタグの外の@userのみを置換したいです。
色々、正規表現を試してみたのですが、上手くいきませんでした。
お教え頂けると嬉しいです。
該当のソースコード
php
1$content ='こんにちは、<a href="https://twitter.com/user1">@user1</a>と、@user2さん。'; 2function replace_tw_user_name_to_link( $content ) { 3 $content = preg_replace( '/@([0-9a-z_]{1,15})/i', '<a href="https://twitter.com/' . '$1' . '">' . '@' . '$1' . '</a>', $content ); 4 return $content; 5} 6 7echo $content; 8結果:'こんにちは、<a href="https://twitter.com/user1"><a href="https://twitter.com/user1">@user1</a></a>と、<a href="https://twitter.com/user2">@user2</a>さん。'
回答4件
あなたの回答
tips
プレビュー