2011-07-06 20 views
-1

私の問題です。あなたがリンクや写真を共有できるウェブサイトを構築しています。今私がしたいことをheres。その画像(JPG、GIF、PNG、電気ショック療法は)私はページ上でそれを表示したい場合は、リンクまたは画像preg/eregを置き換えますか?

<a href="http://example.com" target="_blank">http://example.com</a> 

しかしHERESに私の没落:リンクがサイトへのリンクである場合、そのようなリンクを表示リンクの代わりに。それをどうやって行うのですか?

$profile_post_post = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $profile_post_post); 

リンクを行うコード厥: -

は、追加するのを忘れ。

+0

IMGがちょうど を使用しています。このように、後で再利用するために、$ URLが同時にデータベースに結果を格納する方が良いだろう あなたはあなたがすでに持っているものについて詳しく説明できますか? – cwhelms

+0

通常のリンクの場合は、コードを共有してください。 – hakre

+2

Blimey;私は年に 'ereg_replace'を見たことがありません! @JakeAeroという特別な理由はありますか?マニュアルページには、この機能はPHP 5.3.0以降では廃止されましたが、この機能に依存することは非常に高い落胆 "?あるいは、 '' preg_replace() 'という、Perlと互換性のある正規表現構文を使っている底辺の長いヒントは、しばしば' ereg_replace() 'のより速い代替手段ですか? –

答えて

0

preg_replace_callbackを使用し、その形式に基づいて条件付きでリンクの内容を選択するコールバックを提供します。すなわち、.jpgで終了する場合は、imgタグをレンダリングします。典型的な画像ファイル拡張子以外で終了する場合は、その画像の名前を印刷します。

if (!preg_match("@^https?\:\/\/@", $url) 
{ 
    $url = "http://$url"; 
} 

if (preg_match("@\.(gif|jpe?g|png)[email protected]", $url)) 
{ 
    echo '<img src="' . $url . '" />"'; 
} 
else 
{ 
    echo '<a href="' . $url . '" target="_blank">' . $url . </a>; 
} 

いくつかの写真はGIFを保有することなく、正しいMIMEタイプを添えてすることができるように、これは、正確な方法ではありません:あなたはPHPを使用していると仮定すると、URLが$のURLに格納されて

0

、jpeg、jpgまたはpngの拡張子。

これは、リンクが画像を参照しているかどうかを確認するよりはるかに優れた方法ですが、時間と帯域を消費しています。あなただけの をするだろうあなたは画像をリンクする場合

if (!preg_match("@^https?\:\/\/@", $url) 
{ 
    $url = "http://$url"; 
} 

$headers = get_headers($url, 1); 
$mime_type = isset($headers["Content-Type"]) ? $headers["Content-Type"] : ""; 

if (preg_match("@\.(gif|jpe?g|png)[email protected]", $url) || preg_match("@^image\/@", $mime_type)) 
{ 
    $html = '<img src="' . $url . '" />"'; 
} 
else 
{ 
    $html = '<a href="' . $url . '" target="_blank">' . $url . '</a>'; 
} 
関連する問題