- ベストアンサー
preg_replace関数のtarget属性を_blankに変更したい
- preg_replace関数の引数の一部にある<a>タグ内のtarget属性を変更したいです。
- 現在、使用しているコードでは新しいウィンドウが開かず、元の画面のままリンク先に遷移します。
- 新しいウィンドウにリンク先のURLを表示させるためにはどのような方法がありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$tweet['text']=preg_replace("/(http:\/\/t.co\/[a-zA-Z0-9]{10})/", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $tweet['text']); target の前の空白がマルチバイト文字(いわゆる全角)になっています。そのためtarget属性が(ブラウザに)正しく認識されていません。 $tweet['text']=preg_replace("/(http:\/\/t.co\/[a-zA-Z0-9]{10})/", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $tweet['text']);
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
#2は、いずれにしろいい方法ではありません 失礼しました、あしからず
お礼
yambejpさま 今後ともどうぞよろしくお願い申し上げます。
- yambejp
- ベストアンサー率51% (3827/7415)
ポップアップブロックじゃない? いろいろ問題があるとは思いますがjavascriptで開いてみては? <?PHP $str="てすとてすとhttp://t.co/xxxxxxxxxxてすとてすと"; $pattern="/(http:\/\/t.co\/[a-zA-Z0-9]{10})/"; $replacement="<a href=\"#\" onclick=\"window.open('\\0','_blank');return false;\">\\0</a>"; $str=preg_replace($pattern,$replacement, $str); print $str; ?> ちなみにもともとアンカーにhrefとして指定されていると ダブルバインドしておかしくなりそうですね
お礼
yambejpさま コメントありがとうございます。 今回の問題に関しては、 回答No.1で解決することができました。 上記のコードは今後の参考にさせていただきます。
お礼
agunuzさま コメントありがとうございます。 ご指摘の通りtargetの前の空白を全角から半角にすると、 新しくウィンドウが開くようになりました。 アドバイス助かりました。