プロが教えるわが家の防犯対策術!

○質問の主旨

preg_replace関数の引数の一部にある<a>タグ内の
target属性を"_blank"にしていますが、新しいウィンドウが開かず、
元の画面のまま、href属性のリンク先に遷移します。

新しいウィンドウにhref属性のURLを表示させるためには
どうすれば良いでしょうか?

ご存知の方がいらっしゃいましたら、ご教示願います。

○質問の補足

現在、以下のようなコードを用いています。

$tweet['text']=preg_replace("/(http:\/\/t.co\/[a-zA-Z0-9]{10})/", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $tweet['text']);

$tweet['text']とは、Twitter RESTAPI1.1のGET search/tweetsから
ひっぱってきた文字列で、ツィート本文のことです。

コード全体の意味は、

「ツィート本文にhttp://t.co/○○○○○○○○○○という文字列があれば、
そのリンク先にtarget=_blankで遷移しなさい」

ということになります。

以上、よろしくお願い申し上げます。

A 回答 (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']);
    • good
    • 0
この回答へのお礼

agunuzさま
コメントありがとうございます。

ご指摘の通りtargetの前の空白を全角から半角にすると、
新しくウィンドウが開くようになりました。

アドバイス助かりました。

お礼日時:2014/08/12 09:40

#2は、いずれにしろいい方法ではありません


失礼しました、あしからず
    • good
    • 0
この回答へのお礼

yambejpさま
今後ともどうぞよろしくお願い申し上げます。

お礼日時:2014/08/12 09:43

ポップアップブロックじゃない?


いろいろ問題があるとは思いますが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として指定されていると
ダブルバインドしておかしくなりそうですね
    • good
    • 0
この回答へのお礼

yambejpさま
コメントありがとうございます。

今回の問題に関しては、
回答No.1で解決することができました。

上記のコードは今後の参考にさせていただきます。

お礼日時:2014/08/12 09:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!